为了账号安全,请及时绑定邮箱和手机立即绑定

指向指针数组/数组的指针消歧

指向指针数组/数组的指针消歧

C C++
青春有我 2019-05-31 12:44:03
指向指针数组/数组的指针消歧下列声明之间有什么区别:int* arr1[8];int (*arr2)[8];int *(arr3[8]);理解更复杂的声明的一般规则是什么?
查看完整描述

4 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

使用Cdecl计划,如K&R.

$ 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>

它的作用也是相反的。

cdecl> declare x as pointer to function(void) returning pointer to float
float *(*x)(void )


查看完整回答
反对 回复 2019-05-31
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

我不知道它是否有正式名称,但我称它为右左Thingy(TM)。

从变量开始,然后右转,左转,右…等等。

int* arr1[8];

arr 1是一个由8个指向整数的指针组成的数组。

int (*arr2)[8];

arr 2是指向一个由8个整数组成的数组的指针(括号阻塞右侧)。

int *(arr3[8]);

arr 3是一个由8个指向整数的指针组成的数组。

这将帮助您处理复杂的声明。


查看完整回答
反对 回复 2019-05-31
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

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 


查看完整回答
反对 回复 2019-05-31
  • 4 回答
  • 0 关注
  • 524 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信