有以下程序 #include 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]

admin2019-05-17  28

问题 有以下程序
#include
main()
{  int  aa[3][3]={ {2},{4},{6} }, i, *p = &aa[0][0];
for ( i=0;  i<2;  i++ )
{  if( i == 0 )  aa[i+1] = *p + 1;
else   ++p;
printf("%d  ", *p );
}
}
程序运行后的输出结果是

选项 A、2  6
B、2  3
C、4  3
D、4  6

答案B

解析 观察题目,可以发现,*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。因此B选项正确。
转载请注明原文地址:https://jikaoti.com/ti/RSf0FFFM
0

最新回复(0)