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

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

下列声明之间有什么区别:

int* arr1[8];int (*arr2)[8];int *(arr3[8]);

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


青春有我
浏览 525回答 4
4回答

潇湘沐

使用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 )

斯蒂芬大帝

我不知道它是否有正式名称,但我称它为右左Thingy(TM)。从变量开始,然后右转,左转,右…等等。int* arr1[8];arr 1是一个由8个指向整数的指针组成的数组。int (*arr2)[8];arr 2是指向一个由8个整数组成的数组的指针(括号阻塞右侧)。int *(arr3[8]);arr 3是一个由8个指向整数的指针组成的数组。这将帮助您处理复杂的声明。

慕尼黑5688855

int *a[4]; // Array of 4 pointers to intint (*a)[4]; //a is a pointer to an integer array of size 4int (*a[8])[5]; //a is an array of pointers to integer array of size 5 
打开App,查看更多内容
随时随地看视频慕课网APP