C語言陣列與字串小知識點

2021-06-26 11:37:44 字數 1530 閱讀 9983

一、c語言陣列使用,存放規則等

1、如:陣列int ages;是一種錯誤的寫法。

1>    如果想再定義陣列的同時進行初始化,陣列元素個數必須是常量,或者不寫。

int a = 5;      int ages[a]=;       也是錯誤的,      裡面只能放常量。

2>    int a = 5;      int ages[a];       是正確的。因為沒有進行初始化。

2、 .想計算某個陣列長度,可以用 int count  =   sizeof(ages) /  sizeof(int)。

3、  陣列在記憶體中存放規則:

1>   陣列分配記憶體是按照記憶體位址由小到大依次給陣列分配記憶體空間。

比如 char cs [ 5 ]  =  ;

那麼首先cs會占用記憶體中後面的5個位元組。如ffc9-ffc5,之後的每個儲存空間會從上到下依次儲存,比如

ffc5儲存a;     ffc6 儲存b;   依此類推。

2>  陣列名就代表陣列的首位址。

printf("%s",name)和printf("%s",&name)

這兩個是一樣的,因為name是乙個陣列,所以name傳的就是陣列的首位址。

3>  陣列作為函式引數,可以省略元素個數。

4>  陣列作為函式引數,傳遞的是整個陣列的位址,修改函式的形引數組元素的值,是會影響到外面的實參位址的。

4、  如:int ages[5] = ;

該語句表述定義初始化該陣列,並給ages[3]賦值為10,ages[4]賦值為11。

二、c語言字串

1、當字串末尾結束時,是以'\0'結尾的,該字元的ascii值為0.

如:   char  name[8] = 'it';

char name2[8] = ;

char name3[8] = ;

這三種字串形式在記憶體中表現形式是一樣的。

2、strlen()函式

1>  該函式strlen()所作的僅僅是乙個計數器的工作,它從記憶體的某個位置(可以是字串開頭,中間某個位置,    甚至是某個不確定的記憶體區域)開始掃瞄,直到碰到第乙個字串結束符'\0'為止,然後返回計數器值。

2>使用時,需要標頭檔案 #include;

3>  計算的字元數不包括'\0'.(乙個漢字算作三個字元 )。

3、遍歷字串:4種方式

1>  while(str[i] != '\0') i++;

2>  while(str[i]) i++;

3>  int i = -1;

while(str[++i]);

4>  int i = -1;//查詢字串中是否含有c,如果有返回1,沒有返回0;

while (str [++i] != c&&str[i]!='\0');

return str[i] == '0'?0:1;

C語言字串知識點

在介紹c語言字元和字串之前,許多c語言初學者都很好奇,為什麼字元型別的資料是整型型別?其實字元在記憶體中,是以整數形式 ascii 0 127 存放在記憶體中的。因而字元型別資料屬於整型。字元知識點 定義乙個字元變數 char c a 字元常量要用單引號引用,字串才可以用雙引號 字元這裡就記住要用單...

字串小知識點

1 字串操作 strcpy p,p1 複製字串 strncpy p,p1,n 複製指定長度字串 strcat p,p1 附加字串 strncat p,p1,n 附加指定長度字串 strlen p 取字串長度 strcmp p,p1 比較字串 strcasecmp忽略大小寫比較字串 strncmp p...

陣列與字串的知識點

陣列與字串 1.稍大的陣列盡量定義在main函式外,否則會異常退出。2.陣列a複製k個元素到陣列b,memcpy b,a,sizeof int k 元素是浮點型 memcpy b,a,sizeof double k 全部複製 memcpy b,a,sizeof a 3.memset a,0,size...