当试图解释C的类型时,将[...](或[...] [...]组...)与左侧的东西切换,然后从右向左阅读.从而
char *array[10] -> char *[10]array =
Run Code Online (Sandbox Code Playgroud)
" array是一个10个指向char的数组"
和
char (*array)[10] -> char [10](*array)
Run Code Online (Sandbox Code Playgroud)
" array是一个指向10个字符数组的指针"
所以在第一种情况下,array是10个连续的指针,每个指针指向一个char(可能是一个char,或一个字符序列,如一个字符串),而在第二种情况下,array是一个指针,指向一个一系列10个连续的字符.
你可以用函数类型做类似的事情,用左边的东西切换参数列表.例如,
char* (*f[10])(int*) -> char* (int*)(*[10]f)
Run Code Online (Sandbox Code Playgroud)
" f是一个包含指向int参数并返回指向char的指针的函数的10个指针数组."