-1

我知道的?

有一个数组,int a[10]要访问它的第一个元素,我可以使用a[0]0[a]; 这导致

*(a+0) and *(0+a) -> Both results in accessing first element of the array. 

我想知道什么?

我想知道使用 0[a] 而不是 a[0] 是否更实用?

4

3 回答 3

2

不,是相反的。当一个是指针而另一个是整数时a + b,意思是一样的。b + a这导致*(a + b)*(b + a)意味着相同的事情,并且导致a[b]意味着b[a]相同的事情。

i + p通过添加指向整数 ( )的指针,可以使某些情况更具可读性。i[p]通过索引整数 ( ) ,没有任何案例更易读。不要这样做。

于 2013-02-14T10:09:47.350 回答
1

在您的示例int a[10]中,不,编写0[a].

FredOverflow 链接到一个示例,但从评论中提取原因有点困难。因此,我将其添加为答案。

a[0]如果可以是任何表达式(或例如宏参数)而不是简单名称,0[a]不一定等价。a

假设a展开为b + 1。那么b + 1[0]与 完全不同0[b + 1]

为了解决这个尴尬的情况,您可以询问使用它是否更实用0[a]而不是(a)[0]. 答案仍然是否定的。除非你喜欢简洁而不是熟悉。

宏可以扩展为包含不匹配的括号,例如#define a x]+0[x或其他内容,因此两者在所有情况下仍然不是严格等价的。但是 ifa是一个表达式 then0[a]并且(a)[0]是等价的。

于 2013-02-14T10:37:40.270 回答
-5

(0+a)这意味着在某个时间值增加,(a+0)这意味着再次来之后值增加

于 2013-02-14T10:09:13.443 回答