...aa[3][3]={{2},{4},{6}},i,*p=&aa[0][0]; for(i=
发布网友
发布时间:2024-10-24 00:02
我来回答
共5个回答
热心网友
时间:2024-11-07 03:54
{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-11-07 04:00
23
热心网友
时间:2024-11-07 03:58
这是在题库中看到的答案:
*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-11-07 03:59
答案是 23
VC++ 6.0运行结果。
热心网友
时间:2024-11-07 03:59
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