3.下面程序: int a[5][5], i; int *p = (int *)(a + 1); for (i = 0; i < 20; i++) { *p++ = i; } 执行上面程序后,a[3][2]的值是?
时间: 2024-03-19 22:40:06 浏览: 14
首先,a是一个二维数组,其中每个元素的类型为int,所以a[0][0]的地址就是a的地址,a[1][0]的地址就是a的地址+1,以此类推。所以a+1的地址就是a[1][0]的地址,即第二行第一个元素的地址。
将a+1转换为int*类型的指针p后,执行*p++ = i;语句即把i的值赋给*p,然后将p的值加1,即指向下一个int类型的元素。
按照行优先的顺序,执行20次后,a[3][2]的值为14。
解释如下:
首先,a[0][0]~a[0][4]的地址依次为:a, a+1, a+2, a+3, a+4。
a[1][0]~a[1][4]的地址依次为:a+5, a+6, a+7, a+8, a+9。
a[2][0]~a[2][4]的地址依次为:a+10, a+11, a+12, a+13, a+14。
a[3][0]~a[3][4]的地址依次为:a+15, a+16, a+17, a+18, a+19。
而p的初始值为a+1,即指向a[1][0]的地址,所以第一次执行*p++ = i;语句后,a[1][0]的值为0,p指向a[1][1]的地址。
第二次执行*p++ = i;语句后,a[1][1]的值为1,p指向a[1][2]的地址。
以此类推,直到第15次执行*p++ = i;语句后,a[3][0]的值为14,p指向a[3][1]的地址。第16次执行*p++ = i;语句后,a[3][1]的值为15,p指向a[3][2]的地址。所以a[3][2]的值为14。
相关问题
下列关于指针的用法中错误的是( )。 A. int i,*p; p =&i; B. int *p; p = NULL; C. int i,*p=&i; D. int i = 5,*p; *p = &i;
### 回答1:
&i;
B. int i=10,*p=&i;
C. int i=10,*p; *p = &i;
D. int i=10,*p; p = i;
在这里,错误的是 C 选项。在 C 选项中,*p 尝试去赋值 &i,但是 *p 是一个指针变量,而 &i 是 i 变量的地址。因此,不能将 &i 赋值给 *p。
正确的用法应该是将 p 赋值为 &i,然后使用 *p 来访问 i 变量的值。例如:
int i = 10, *p;
p = &i;
*p = 20; // 现在 i 的值为 20
另外,A 选项是正确的,B 选项也是正确的,D 选项是错误的。在 D 选项中,p 尝试赋值 i,但是 p 是一个指针变量,而 i 是一个整数变量。因此,不能将 i 赋值给 p。
### 回答2:
&i; *p= 10; B. int a[5]; int *p = a; C. int i; int *p = &i; D. int a[5]; int *p = &a;
### 回答3:
&i; B. int *p,i; p = &i; C. int *p,i; *p = &i; D. int i,*p; *p = 10; 正确答案是:C. int *p,i; *p = &i;
解释:C选项中,指针p未被初始化,不能直接将地址&i赋给*p。应该先为指针p分配内存空间,然后再将地址赋给它。正确写法应该是 int *p,i; p = &i; *p = 10;
下面程序: int a[5][5], i; int *p = (int *)(a + 1); for (i = 0; i < 20; i++) {*p++ = i; } 执行上面程序后,a[3][2]的值是?
这段程序的作用是将一段连续的内存空间按顺序填入数字 0~19,其中 a 是一个 5x5 的二维数组,p 是指向 a[1][0] 的指针。因为 a 是一个二维数组,所以 a+1 相当于指向了 a[1][0] 的指针,因此 p 指向了 a[1][0]。接下来的循环中,p 不断自增,每次将当前的 i 值填入 p 所指向的位置。因此,执行完这段程序后,a[3][2] 的值为 11。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)