指针算术难吗?

时间:2014-08-25 15:27:15

标签: c pointers pointer-arithmetic

我记得当我第一次开始学习C时,有人告诉我“指针算法很难”。我不完全明白它有什么困难吗?

arr[i] == *(arr + i)
*ptr = arr[2]然后*ptr + 1 = arr[3]

这真的是它的全部,因为这些概念都没有我想象的那么难吗?

1 个答案:

答案 0 :(得分:0)

好吧,如果你的意思是最后一个*(ptr + 1) = arr[3],那么你似乎已经掌握了它。将下标运算符([])替换为指针:

arr[3] === *(arr + 3)

不是很难。什么变得棘手的是当你有指针指向数组的中间,然后必须记住它们在数组中的位置,以便你知道要索引什么。因此,如果ptr1指向数组的开头,而ptr2指向索引3,那么 *(ptr1 + 4) *(ptr2 + 1)各自会产生相同的值。此外,如果在数组中间有指针,则可以使用负数下标,这在Java等高级语言中是不允许的。所以是的,它可以变得像人们关心的那样复杂。