搜索

...aa[3][3]={{2},{4},{6}},i,*p=&aa[0][0]; for(i=

发布网友 发布时间:2024-10-24 00:02

我来回答

5个回答

热心网友 时间:2024-10-30 19:23

{2}{4}{6}分别是三个行一维数组的首地址的值;
循环两次,i=0时,因为打印的是*p,所以与语句aa[i][i+1]=*p+1没有关系,aa[0][1]=3;此时输出2;
当i=1时执行else ++p,这句话的意思我认为是p这个指针指向后一位,即p指向了aa[0][1];在这里++p和p++和*++p和*p++效果都是一样的我试过,我也试过把*p+1换成*p+3、4、5,证明了++p确实是p指针向后移了一位,不是aa[0][0]+1,
#include <stdio.h>
int main()
{
int aa[3][3]={{2},{4},{6}},i,*p = &aa[0][0];
for(i=0;i<2;i++)
{
if(i==0) aa[i][i+1] = *p+1;
else *++p;
printf("%d",*p);

}
printf("%d",aa[0][0]);
printf("%d",aa[0][1]);
printf("%d",aa[0][2]);
printf("%d",aa[1][0]);
printf("%d",aa[1][1]);
printf("%d",aa[1][2]);
printf("%d",aa[2][0]);
printf("%d",aa[2][1]);
printf("%d",aa[2][2]);
printf("\n");
}
运行结果:23230400600

热心网友 时间:2024-10-30 19:19

答案是 23
VC++ 6.0运行结果。

热心网友 时间:2024-10-30 19:21

这是在题库中看到的答案:
*p=&aa[0][0]语句实际是将数组aa的首地址赋给了指针变量p,
将i的值带入for循环中,
i=0时,aa[0][1]=3,*p=2:*p输出的是指针所指向的数组值,此时p所指向的是aa[0][0],输出2,
而i=1时执行了++p操作使指针向后移动指向了aa[0][1],所以在输出*p时应为3。

热心网友 时间:2024-10-30 19:24

aa[0][0] 的值为2
*p=&aa[0][0]; 意为把2赋值给指针p
i=0,执行语句aa[i][i+1]=*p+1; 此时输出2
i=1,执行else ++p;此时输出3
因此答案为23

热心网友 时间:2024-10-30 19:22

23
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top