我正在通過玩具問題來理解C和C中指針和數組之間的區別,我偶然發現了一些我還沒有尋找或尋找答案。(* b)[0] vs * b [0] - 數組和指針
我有以下程序
#include <stdio.h>
int main()
{
int a[3][3] = {{1, 2, 3}, {4, 5,6}, {7, 8, 9}};
int (*b)[3];
b = a;
printf("%d %d %d\n", (*b)[0], (*b)[1], (*b)[2]);
printf("%d %d %d\n", *b[0], *b[1], *b[2]);
b++;
printf("%d %d %d\n", (*b)[0], (*b)[1], (*b)[2]);
b++;
printf("%d %d %d\n", (*b)[0], (*b)[1], (*b)[2]);
return 0;
}
當我編譯並運行它,我得到這個:
[email protected]: clang -g q.c -o q.o
[email protected]: ./q.o
1 2 3
1 4 7
4 5 6
7 8 9
我的問題是什麼(*b)[0]
和*b[0]
之間的區別?看起來前者是int *
型,而後者是int *[3]
型。如何解釋操作人員*[]()
來認識這一點?
啊,我應該有一個知道我曾經寫過運算符來考慮運算符的優先級。你的回答爲我清除了一些事情。 – Idr