擴充套件 字元陣列與字串之間區別 函式的使用方法

2021-10-22 16:33:01 字數 4267 閱讀 4546

二、總結函式的使用方法

三、**演示

1)字元陣列是用來存放字元的陣列,陣列元素的型別是char型,元素用單引號;

初始化時,可以指定陣列的大小(含有多少個元素)、可以對陣列全部或者部分賦值初始化,也可以用字串對陣列進行初始化。

2)字串就是用雙引號括起來的任意字串行,可以看作是乙個個單個字元的陣列,但是字串的末尾有』\0』結束標記。

初始化時,可以把字串直接賦值給乙個字元陣列,也可以用字元型指標變數。

字元陣列和字串在記憶體中都是連續儲存的。不同的是,字串在乙個字串的結尾會有』\0』結束標記,但是字元陣列沒有。

字串可以用printf()函式配合%s和puts()函式來表示,也可以把字串當作是乙個陣列,只輸出其中乙個元素。

字串陣列可以對陣列中任意乙個元素賦值,可以在定義的時候用字串為其賦值,但是定義了乙個字元陣列之後,在後面為其賦值不可以用字串了。

字串在定義時可以用字串直接賦值,在使用時,也可以對其中的某個元素進行更改。字元型指標字串在使用時可以再次用字串進行賦值,但是字元陣列定義的字串不行。

gets(s) 字串輸入函式,輸入的字串儲存到s中

puts(s) 字串輸入函式,輸出的時s中儲存的資料,遇到』\0』結束輸出

strcpy(s1,s2) copy 字串複製函式,把後者複製到前者中

strcat(s1,s2) 字串連線函式,把後者接到前者末尾

strcmp(s1,s2) 字串比較函式,兩者相等返回0,前者大於後者後者返回1,後者大於前者返回-1

strchr(s,ch) 字元查詢函式,返回ch第一次在s**現時的位址

strstr(s1,s2) 字串查詢函式,返回s2第一次在s1**現的位址

當字元數字做函式引數時。我們需要傳遞兩個引數,乙個是陣列名(即字元陣列的首位址),另乙個是陣列的長度。

字串做函式引數的時候,如果定義的是字元型指標變數,則只需要傳遞乙個變數就可以了,不需要傳遞長度。

函式的定義是函式具體功能實現的全部**

函式的宣告是當函式的定義在main函式之後時,在main函式先寫乙個函式宣告,它不需要全部的**,把花括號換成乙個分號即可。

形參是在函式定義時出現的引數,它隨著函式被呼叫而出現,隨著函式的結束而結束,它沒有實際的資料,只是用來接收實參的值,然後在該函式內進行運算。

實參是乙個函式在呼叫另乙個函式時,把真真切切的資料傳遞給形參的變數,就是我們在呼叫函式時在函式的引數列表裡寫的變數名。

返回乙個值給呼叫者,這個值與函式的返回值型別一致。

結束函式的呼叫,繼續執行原來的步驟。

全域性變數可以在檔案的任意位置訪問,就像是空氣幾乎無處不在。

區域性變數是只能在定義它的函式內才可以訪問的變數,就像是你在家噴的香水,作用範圍有限。

傳值呼叫只是把實參的值複製乙份給形參,被呼叫函式對形參的任何修改都不會影響或者改變實參。

傳位址是把變數的記憶體位址傳遞給區域性變數的一種傳遞方式,這樣,它們就是真的聯絡在一起了,被呼叫函式對其進行操作相當於對外部的變數進行操作。

函式的遞迴呼叫就是在呼叫函式的過程中有出現了呼叫該函式本身。

遞迴呼叫也是函式的呼叫,只不過是自己呼叫自己。

#include

#include

void

test_char

(char array,

int len)

;void

test_str

(char

* str)

;int

main

(void);

//定義並初始化

char array3=

;//用字串初始化

char array4=

"zxcv"

;//用字串初始化

//字串的定義

char str1=

"jkljkl"

;//利用字元型陣列

char

* str2 =

"bnmbnm"

;//利用字元型指標

printf

("字元陣列初始化後輸出:\narray2 = ");

int i;

for(i=

0;i<

4;i++

)printf

("%c"

,array2[i]);

printf

("\narray3 = %s\n"

,array3)

;printf

("array4 = %s\n"

,array4)

;printf

("*************************************\n");

printf

("字串初始化後輸出:\n");

puts

(str1)

;puts

(str2)

;//字串處理函式

printf

("*************************************\n");

int len =

strlen

(str1)

;printf

("求字串長度的函式strlen(str1) = %d\n"

,len)

;int a =

strcmp

(str1,str2)

;printf

("字串比較函式strcmp(str1,str2) = %d\n"

, a)

;char

* b =

strchr

(str1,

'k')

;printf

("字串查詢函式strchr(str1,'k') = %s\n"

, b)

;char

* c =

strstr

(str1,

"lj");

printf

("字串查詢函式strstr(str1,\"lj\") = %s\n"

, c)

;printf

("字串複製函式:\n複製前:%s\n"

,str1)

;strcpy

(str1,str2)

;printf

("複製後:%s\n"

,str1)

;//字元陣列、字串作為函式的引數

printf

("*************************************\n");

test_char

(array4,4)

;test_str

(str1)

;return0;

}void

test_char

(char array,

int len)

printf

("\n");

}void

test_str

(char

* str)

#include

//這是函式宣告

intcompare

(int a,

int b)

;void

test_return

(int a)

;void

test_var

(void);

void

jiaohuan

(int m,

int n)

;void

jiaohuan2

(int

* p1,

int* p2)

;intf(

int n)

;//全域性變數定義及初始化

int global_var =

123;

intmain

(void

)//這是函式原型

intcompare

(int a,

int b)

void

test_return

(int a)

if(a<0)

}void

test_var

(void

)void

jiaohuan

(int m,

int n)

void

jiaohuan2

(int

* p1,

int* p2)

//遞迴函式

intf

(int n)

字串 字串陣列 字元陣列的區別

string a newstring 字串 string a newstring 5 字串陣列 char a newchar 5 字元陣列 string a newstring abc 字串 string a newstring 字串陣列的賦值 string a 字串陣列的初始化 char a ne...

字串與字元陣列的區別

用字元陣列和字元指標變數都可實現字串的儲存和運算。但是兩者是有區別的。在使用時應注意以下幾個問題 1.字串指標變數本身是乙個變數,用於存放字串的首位址。而字串本身是存放在以該首位址為首的一塊連續的記憶體空間中並以 0 作為串的結束。字元陣列是由於若干個陣列元素組成的,它可用來存放整個字串。2.對字串...

字串陣列與字串指標的區別

字元指標變數和字元陣列的區別 簡單說一下 字串陣列是用來存放字串的陣列,在記憶體中佔一段連續的單元。所佔記憶體存放的是字串。定義方法為 char a n n為常量表示式,可初始化。字元指標是指向字元的指標,所佔記憶體單元存放的是所指字元的記憶體單元。定義方法為 char p 完整的解答 1 字元陣列...