C語言陣列的小知識

2021-08-14 21:27:14 字數 2490 閱讀 6804

陣列:使用乙個名稱儲存同一類的多個資料;其中乙個資料稱為陣列元素。

一,一維陣列

1、格式 型別(int char float long short 等) 陣列名 [數字、常量表示式];eg int a[10];常量表示式不能是變數,即不能對陣列大小進行動態定義

2、引用 陣列名【下標】eg a[2] = 5;陣列的乙個元素相當於乙個變數,對陣列元素的操作實際上是對乙個變數的操作。

3,、陣列在記憶體中的存放,整個陣列所佔的大小是陣列的個數乘以基型別eg int a[10] 大小為sizeof(int)*10;系統會為定義的陣列自動分配一段連續的

儲存空間,陣列的首位址是第0個元素的位址;

二維陣列

一、格式;基型別 陣列名(三行四列)可以把二維陣列看成特殊的一維陣列eg  int a[3][4] =

二、引用:陣列名 【1下標】【2小標】

三:陣列在記憶體中的存放:二維陣列在記憶體中是按照二維陣列元素的下標從小到大的順序來儲存的。即首先儲存二維陣列第一行元素中的所有元素,然後依次儲存接下來的元素。

四:賦值 1.分行給二維陣列賦初值。

例如: int a[3][4]=,,  

};2.可以將所有資料寫在乙個花括號內,按陣列排列的順序對各元素賦初值。

例如:int a[3][4]=;

3.可以對部分元素賦初值。

例如: int a[3][4]=, , };也可以對各行中的某一元素賦初值,如int a[3][4]=, , }; 

4.如果對全部元素都賦初值,則定義陣列時對第一維的長度可以不指定,但第二維的長度不能省。

例如:int a[3][4]=;等價於:

int a[ ][4]=;

三、字元陣列

1:定義char 陣列名【個數】

2:初始化 例如:char c[10];

c[0]=′i′ ;  c[1]=′ ′;   c[2[=′a′;   c[3]=′m′;

c[4]=′ ′;   c[5]=′h′;  c[6]=′a′;   c[7]=′p′;

c[8]=′p′;   c[9]=′y′;

char c[10]= 

c語言規定字串結束的標誌位『\0』;

4、字元陣列的輸入輸出

逐個字元輸入輸出。用格式符「%c」輸入或輸出乙個字元。char ch = 'p'; printf("%c\n",&ch);

將整個字串一次輸入或輸出。用「%s」格式符,意思是對字串的輸入輸出。 char ch[ ] = "abc";printf("%s\n",ch);

5、如果陣列長度大於字串實際長度,也只輸出到遇′\0′結束。

輸出字元不包括結束符′\0′。

如果乙個字元陣列中包含

乙個以上′\0′,則遇第乙個′\0′時輸出就結束。 

6、如果利用乙個scanf函式輸入多個字串,則在輸入時以空格分隔。

例如:scanf(″%s %s %s″,str1,str2,str3);

輸入資料:how are you? 

四、字串處理函式

1、puts(字元陣列名 )函式;

作用:將一串字串遇到\0為止輸出到終端上並加上換行符;用puts函式輸出的字串中可以包含轉義字元。

例如:char str[ ]=;

puts(str);

輸出結果:

china

beijing    

2、gets(字元陣列名)函式

作用:從終端輸入一串字串到字元陣列

與scanf()的區別:gets遇到回車結束,scanf遇到回車與空格結束;若輸入的字元中含有空格則用gets;

注意:gets()未指定快取區大小,有警告;

以下字串處理函式需要加上標頭檔案#include

3strlen(字元陣列名)函式:用來測量字元陣列的實際長度(遇到\0結束的長度)sizeof()是陣列的大小;sizeof()包括

\0;4、strcat(字元陣列1,字元陣列2);

作用:將字元陣列2的內容加到字元陣列1後面;結果放在字元陣列1裡面;

注意:sizeof(字元陣列1) >= strlen(字元陣列1) + strlen( 字元陣列2 )

5、strcpy(字元陣列1,字串)

作用:將字串複製到字元陣列1中;

strcnpy(字元陣列1,字元陣列2,2):將字元陣列2的前兩個字元與\0放到字元陣列1中;

6、strcmp(字串1,字串2):比較兩個字串;

eg:strcmp( str1 , str2 )

若str1 = str2 ;函式返回0;

若str1 > str2;函式返回1;

若str1 < str2;函式返回-1;

注意:對兩個字串比較,不能用以下形式:

if(str1>str2) 

printf(″yes″);

而只能用

if(strcmp(str1,str2)>0) 

printf(″yes″);

strcnmp( 字串1 , 字串2 ,n)比較前n個字元;

C語言 小知識

1.表示式的求值 初始值 x 1,y 1 z 1 求 x y z 答 從左到右順序依次求值,1 true 注意 因為 操作符的左運算元是true,所以沒有必要求值了.事實上c語言肯定不會繼續求值 有關規則,在按從左到右的順序對乙個邏輯表示式求值的時候,只要知道了它的實際結果,就不會對其餘部分求值.這...

c語言小知識

1 為什麼include標頭檔案後,就可以呼叫檔案中宣告的函式了?標頭檔案中一般只是函式和變數的宣告,編譯器需要知道函式傳遞的是什麼引數,否則呼叫的地方 不知道如何設定暫存器和棧等一些相關資訊。至於函式的位置,由於在其他的編譯單元中,需要鏈結 時才能找到。標頭檔案中包含了函式的宣告,其具體的函式 即...

C語言小知識

nowcoder 牛客網 筆記 一 區域性變數與全域性變數 區域性變數不會影響全域性變數的值,使用完即會釋放 二 變數的傳遞 形參的修改對外部不影響 傳入引用與指標時在函式裡修改的將會傳遞出來 三 c語言與c 中的const void main 在c語言中結果為1,1 在c語言中const是執行時的...