二维数组
定义格式
数据类型[行数][列数] = {值};
整形数组为例:
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");