二維數組
定義格式
數據類型[行數][列數] = {值};
整形數組爲例:
a[3][4] = {1,2,3};// a[1] ={ 1 ,2, 3}; a[2] ={0} ;a[3] = {0}
a[][4] = {1,2 ,3,4,5};這種情況下列數已經給出 ,由後面的個數可以確定前面的行數,所以二維必須不能省,一維可以省
當然 a[ ][ ]這種都省的情況下肯定錯誤, 系統無法判斷出是幾行幾列
使用:
下標從0開始 a[2][3] = {1,2,3,4,5,6};
//整個數據是這樣存在的 a[0][0], a[0][1], a[0][2],a[1][0],a[1][1], a[1][2];可以單獨賦值
遍歷:
使用雙重for循環進行遍歷
for (int i = 0;i < 2; i++){
for(int j = 0;j < 3; j++)
{
printf("%d", a[i][j]);
}
}
字符串數組即字符的二維數組:
char string[3][20] = {"hello", "how are you","good"};
字符串數組即裏面存放的是字符串,字符串即字符數組
string[1], string[2], string[3]即是首地址;故在使用%s輸入的時候不需要加&,可以和下面的對照
char str[3] = {'h', 'o', '\0'};
scanf("%s", str);//str即是數組的首地址
故對上述二維字符數組的賦值可以使用如下方式
for (int i = 0; i< 3; i ++){
scanf("%s", string[i]);
}
對於字符串數組的遍歷可以採用兩種方式
1.即是雙從for循環 (如上整形數組不在贅述) 2.即是使用%s進行輸出
for(int i = 0;i < 3; i++){
printf("%s", string[i]);
}
注意:凡是涉及到對字符串的比較和賦值不能使用 > <或者=這些運算符 而是使用 strcmp(字符串1,字符串2); strcpy(字符串1,字符串2)這些字符串的函數,計算長度就用 strlen;在結構體中也要注意要使用strcpy(student.name, "lili");