【发布时间】:2013-03-22 04:59:00
【问题描述】:
有什么区别
char *array[10];
和
char (*array)[10];?
据我了解,
-
案例 1:
-
array被声明为大小为 10 的字符数组。 - 这是因为
[]的优先级高于*。
-
-
案例 2:
-
array被声明为指向大小为 10 的字符数组的指针。 - 这是因为
()和[]具有相同的优先级,并且它们是从左到右计算的。然后评估*运算符。
-
我的理解正确吗?即使它是正确的,我也会感到非常困惑。有人可以更清楚地解释一下区别吗?
【问题讨论】:
-
现在的问题。第一个不是字符数组的数组。它只是一个指向字符的数组。对于第二个,
()and[]确实具有与运算符相同的优先级,但这里不止于此。这些是声明性陈述。括号用于将array与[]分开,同时将其与*结合。听起来您的理解非常接近。 -
@WhozCraig,感谢您的解释 :)