首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C指针指向数组/指针数组消除歧义

C指针指向数组/指针数组消除歧义
EN

Stack Overflow用户
提问于 2009-05-13 18:35:13
回答 10查看 393.6K关注 0票数 494

下面的声明有什么区别:

代码语言:javascript
复制
int* arr1[8];
int (*arr2)[8];
int *(arr3[8]);

理解更复杂的声明的一般规则是什么?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-05-13 18:37:30

代码语言:javascript
复制
int* arr[8]; // An array of int pointers.
int (*arr)[8]; // A pointer to an array of integers

第三个与第一个相同。

一般规则是operator precedence。随着函数指针的出现,它可能会变得更加复杂。

票数 462
EN

Stack Overflow用户

发布于 2009-05-13 18:45:00

按照K&R的建议,使用cdecl程序。

代码语言:javascript
复制
$ cdecl
Type `help' or `?' for help
cdecl> explain int* arr1[8];
declare arr1 as array 8 of pointer to int
cdecl> explain int (*arr2)[8]
declare arr2 as pointer to array 8 of int
cdecl> explain int *(arr3[8])
declare arr3 as array 8 of pointer to int
cdecl>

它也以另一种方式工作。

代码语言:javascript
复制
cdecl> declare x as pointer to function(void) returning pointer to float
float *(*x)(void )
票数 270
EN

Stack Overflow用户

发布于 2011-03-02 16:03:19

代码语言:javascript
复制
int *a[4]; // Array of 4 pointers to int

int (*a)[4]; //a is a pointer to an integer array of size 4

int (*a[8])[5]; //a is an array of pointers to integer array of size 5 
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/859634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档