我有一个测试程序来尝试这个:
int main()
{
int i = 1;
int* p, q;
p = &i;
//q = &i;//q is not pointer
int* buf[20];//type of element is int*
return 0;
}
(1) 我发现
q
不是指针,所以看起来int *p
中的星号是右结合的。(2) 但是对于
int* buf[20]
,我发现buf
是一个由20个元素组成的数组,每个元素都是int*
类型。所以在第5行,星号似乎是左结合的。那么,
*
与表达式的其他部分关联的确切规则是什么,是左结合还是右结合,还是适用于其他规则?
p
和q
是不同的变量,它们可能是不同的类型。但是无法声明一个数组,其中第一个元素是指针,而第二个元素不是。 - songyuanyaoint p, *q, r[3], *s[3], (*t)[3];
中,p
是int
,q
是指向int
的指针,r
是int
数组,s
是指向int
的指针数组,而t
是指向int
数组的指针。 - Dmitrioperator*
。 - juanchopanza*
是左结合的,这意味着a * b * c
是(a * b) * c
而不是a * (b * c)
。 - molbdnilo