先从一维数组讲起
int main() {
int arr[5] = { 1,2,3,4,5 };
for (int i = 0; i < 5; i++) {
printf("%d",arr[i]); //对数组进行访问
}
return 0;
}
其实 arr [ i ] == * (arr + i) 这两个是完全相等的,在c语言指针(1)8.数组名与 &数组名
中我们说过数组名就相当于数组首元素地址,所以对(arr+i)进行解引用后就可以访问到这个数组的每一个元素。
访问二维数组本质
周所周知二维数组的访问方法为:arr [ i ] [ j ] ----- i 表示行,j 表示列
int main() {
int arr[3][5] = { { 1,2,3,4,5 },{ 2,3,4,5,6 },{ 3,4,5,6,7 } };
//第一个元素 第二个元素 第三个元素
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
printf("%d",arr[i][j]); //访问数组
}
return 0;
}
其实二维数组也可以抽象成一维数组,因为二维数组在内存中也是连续存放的
使用arr [ i ] [ j ]
就是先对arr数组进行 arr [ i ] == * (arr + i) 操作,拿到数组arr的第一个元素(行),
然后在对第一个元素进行 arr [ j ] == * (arr + j) 操作,拿到元素中的元素(列)。