C语言高手 请告诉我几道简单的题! 我想搞明白 谢谢

17. 若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是_______. int t[3][3], *pt[3], k; for (k=0;k<3;k++) pt[k]=&t[k][0]; A. t[2][0] B. t[2][2] C. t[l][2] D. t[2][l] 答案是C 但是我没明白 还有 11. 以下程序执行后sum的值是__________ main() { int i , sum; for(i=1;i<6;i++) sum+=i; printf(“%d\n”,sum); } A. 15 B. 14 C. 不确定 D. 0 为什么答案是C 求指导

第1个回答  2020-03-06
第一个题,t是一个数组,pt是一个指针数组,做完循环后,指针数组就指向了t这个数组了。即pt和t应该是一个内容,只不过t是const的。*(pt+1)就是t[1],*(*(pt+l)+2)就是t[1][2]了。
第二个题,sum没有初始化,所以答案就选c了。记住一点哦,永远不要使用未初始化的变量!
第三个题,选c,关键是那个static
int
d,这个地址分配以后,里面的内容直到程序执行结束才释放,这是变量生存期的问题了。
最后多说一句,这些题,最好是自己动手敲到编译器里面执行一下,然后,用调试的功能,观察各变量的变化,这样理解起来会比较容易。