|
本帖最后由 4399APPLE 于 2014-10-19 08:33 编辑
写的不好的C语言教科书里,往往会说p[j]是数组p的第j个元素。这虽然也不算错,但终究有些敷衍。如果你不懂汇编,这种说法是最省事的。
p[j]和*(p + j)的意思完全相同。要么是嫌后者太长太麻烦或者是为了看起来好看就会使用这种写法。在这个例子中,*(p + j)是6个字符,而p[j]只有4个字符。区别只有这一点,所以大家可以根据喜好使用。p[j]只不过是一个看起来像数列的使用了简便变量的写法。
反过来说,也可以将p[0]写成*p,写成指针的样子倒是节省了2个字符。总之,根据情况,选择自己喜欢的就行了。
不是说改变一下写法,地址变量就变成数组了。大家不要被那些教科书骗了,编译后生成的Machine language完全一样,这比什么都能够说明,意思没有变化,只是写法不同。
再多说几句,加法运算可以交换顺序,所以将*(p + j)写成*(j + p)也是可以的。同理,将p[j]写成j[p]也是可以的(可能你会不相信,但这样写既不会出错,也能正确运行)。a[10]也可以写成10[a](这当然也是真的)。难道说这是名字叫做10的数组的第a个元素吗?当然不是。所以,p[j]也好,j[p]也好,仅仅是一种省略写法,本质上讲,与数组是没有关系的。
|
|