以下是引用phxsun在2005-8-21 15:49:52的发言:
若有定义:int a[3][4],b[3][4],(*prt)[3];且0〈=i〈3, 则正确的赋值语句是:
a) prt=a; b) prt=b; c) prt=b[i]; d) prt=a[i];
没有呀?答案是选A呀
我不知道是为什么?那位高人帮忙看一下
先谢过
题错了,如果你搞清基本概念,就不会有如此凝问了。
int (*prt)[3]
prt是一个指针,一个指向有三个int成员的数组的指针,一个指向指针的指针(二级指针)。
而题中的int数组却是3*4,却a[0],a[1],a[2]有四个成员(b也是这样)所以,prt根本不能正确指向这两个数组。
如果a数组定义为 int a[4][3];则
a) prt=a; 对
注意,即便是a数组定义为 int a[4][3];
d) prt=a[i]; 还是错的,在TC中可能会有个警告,但会让你通过编译。但在其它现代编译器中(C99标准)可能就不让通过了。