4.若有定义
typedef int *T;
T a[20];
则以下与上述定义中a类型完全相同的是( )
A) int a[20];
B) int (*a)[20];
C) int *a[20];
D) int **a[20];
我选的是C,但是这练习册答案说是B,我不太懂,(求解,感谢
4.若有定义
typedef int *T;
T a[20];
则以下与上述定义中a类型完全相同的是( )
A) int a[20];
B) int (*a)[20];
C) int *a[20];
D) int **a[20];
答案是不是错了,typedef就是直接替换啊。c是对的啊
1、int a[20]
定义a是一个数组,数组中每一个元素都是int类型。
2、int (*a)[]
定义a是一种指针。
a指向一种整数数组。
对比1的写法,2使用了括号把'*'和a括起来(*a),因为操作符[]的优先级大于*的优先级。
所以:(*a)是一个数组,数组的每一个元素都是一个整数,而a是指向这个数组的指针。
3、int *a[]
定义a是一个数组。
每一个数组的元素是一个指针,指向一个整数。
结合属性是:
int *a[] => (int *) a[]
所以:a是一个数组,数组的每一个元素的类型是(int *)。
4、int **a[]
同3一样,定义a是一个数组,数组中每一个元素都是int**类型。