1. 程式人生 > >【c/c++陣列】複習陣列操作

【c/c++陣列】複習陣列操作

一維陣列賦值( a[10]

直接賦值:a[10]={1,2,3,...,9};

不賦初值:隨機值或0

全賦同一初值:a[10] = {0};  //或者更推薦用memset函式

memset函式:memset(陣列名,值,sizeof(陣列名));//如:memset(a , 0 , sizeof(a))

二維陣列(int a[5][6] 

直接賦值:a[5][6] = {{},{},{},{},{},{}};

如果陣列大小較大(10^6)需將其定義在主函式main()外面,原因是函式內部申請的區域性變數來自系統棧,允許申請的空間較小;而全域性變數來自靜態儲存區,允許申請的空間較大。

字元陣列(char陣列一維時)

//char陣列二維時可看作是字串陣列,即多個字串;

末尾有一個空字元\0(NULL,ASCII碼為0)表示存放的字串結尾(在用gets或scanf輸入字串時自動在字串末尾新增,佔用一個字元位),如果用scanf的%s或gets輸入字串(如用getchar),結尾一定要加入\0,否則printf和puts輸出會出現亂碼

分別賦值:char str[15] = {'a',.....,};

直接賦值(僅限初始化):char str[15] = “bad story”;

scanf輸入:%c 能夠識別空格跟換行並將其輸入

                 %s 通過空格跟換行來識別一個字串的結束,(輸入時陣列名前不需要取地址符

getchar()/putchar():單個字元的輸入輸出,getchar()常用來把每行末尾的換行符吸收掉

gets()/puts(): 用來輸入/出一行字串,gets識別換行符\n作為輸入結束,如果用scanf輸入完後使用gets,要使用getchat()吸收掉換行符後再使用gets