读书人

typedef int int_arr[4];解决办法

发布时间: 2012-04-19 14:36:43 作者: rapoo

typedef int int_arr[4];
有如下定义:
typedef int int_arr[4];

int_arr array; 相当于:int array[4];

那么这样定义怎么理解:
int_arr *pia; 相当于:int *pia[4];
还是相当于:int (*pia)[4];
还是相当于:int * *pia;

怎么理解。谢谢。。


[解决办法]
相当于 int (*pia)[4]; 这个
从内往外读
pia 是一个指针 指向 类型int[4] 也就是int_arr
[解决办法]
相当于int (*pia)[4];
这样理解吧:有一种类型叫整型,用int来表示。那么 int *p; p就是一个指向整型int的指针。
现在又一种类型叫int[4],用int_arr表示。那么int_arr *pia; pia就表示一个指向int[4]的指针。
这样的话,应该比较容易理解。

下面是一些测试
typedef int int_arr[4];
int_arr *pia;

int a[4];
pia = &a;
上面代码能编译通过。说明pia确实为int[4]的一个指针。



typedef int int_arr[4];
int_arr *pia;

int *p;
pia = &p;
就编译不通过。在VC6.0里面,提示的错误为:
“ error C2440: '=' : cannot convert from 'int ** ' to 'int (*)[4]' ”

读书人网 >C++

热点推荐