以下声明之间有什么区别:
int* arr1[8];
int (*arr2)[8];
int *(arr3[8]);
Run Code Online (Sandbox Code Playgroud)
理解更复杂的声明的一般规则是什么?
我只是想确保C语言中*a [5]和(*a)[5]之间的区别.
我知道*a [5]意味着数组a可以有五个元素,每个元素都是指针.所以,
char *p = "ptr1";
char *p2 = "ptr2";
char *a[5] = { p , p2 };
Run Code Online (Sandbox Code Playgroud)
它确实有意义.
但是,当我改变*a[5]
到(*a)[5]
这是行不通的.
char (*a)[5] = { p , p2};
Run Code Online (Sandbox Code Playgroud)
究竟(*a)[5]
是什么意思?
此外,
有什么区别*a[5]
和a[5][]
,和(*a)[5]
和a[][5]
?