我正在通过玩具问题来理解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