#include<stdio.h> int main (){ int array[4][5]={0}; int i,j,k; for(i=0;i<4;i++) { for(j=0;j<5;j++) { array[i][j]=k++; } } printf("array+1:%p\n",array+1); printf("*(array+1):%p\n",*(array+1)); printf("array[1]:%p\n",array[1]); printf("&array[1][0]:%p\n",&array[1][0]); printf("**(array+1):%d\n",**(array+1)); return 0; }解释一下每行代码
时间: 2024-04-16 19:28:57 浏览: 48
解释每行代码的作用:
```c
#include <stdio.h>
int main() {
int array[4][5] = {0}; // 声明一个4行5列的二维数组,并初始化为0
int i, j, k;
for (i = 0; i < 4; i++) {
for (j = 0; j < 5; j++) {
array[i][j] = k++; // 对数组元素赋值,k的值不断递增
}
}
printf("array+1: %p\n", array + 1); // 打印二维数组的第2行的地址
printf("*(array+1): %p\n", *(array + 1)); // 打印二维数组的第2行的地址
printf("array[1]: %p\n", array[1]); // 打印二维数组的第2行的地址
printf("&array[1][0]: %p\n", &array[1][0]); // 打印二维数组的第2行第1列元素的地址
printf("**(array+1): %d\n", **(array + 1)); // 打印二维数组的第2行第1列元素的值
return 0;
}
```
解释结果:
- `array+1`:`array` 是一个指向二维数组首行的指针,`array+1` 表示指向二维数组的第2行,打印出该行的地址。
- `*(array+1)`:`*(array+1)` 等价于 `array[1]`,表示指向二维数组的第2行,打印出该行的地址。
- `array[1]`:表示二维数组的第2行的地址。
- `&array[1][0]`:表示二维数组的第2行第1列元素的地址。
- `**(array+1)`:`*(array+1)` 等价于 `array[1]`,然后再解引用一次,表示二维数组的第2行第1列元素的值。
请注意,这段代码中没有初始化变量 `k` 的初始值,所以在赋值给数组元素之前,需要先为 `k` 赋予一个合适的初始值,否则程序行为是未定义的。
阅读全文