我记得当我刚开始学习C时,有人告诉我"指针运算很难"。我不太明白这有什么难的?
arr[i]
== *(arr + i)
*ptr = arr[2]
then *ptr + 1 = arr[3]
这真的是它的全部吗,因为这两个概念都没有我想象的那么难吗?
好吧,如果你的意思是*(ptr + 1) = arr[3]
的最后一个,那么似乎你有它的窍门。为指针替换下标操作符([]
):
arr[3] === *(arr + 3)
不是很难。棘手的是,当指针指向数组中间时,你必须记住它们在数组中的位置,这样你就知道要索引什么了。因此,如果ptr1
指向数组的开头,ptr2
指向索引3,那么 *(ptr1 + 4)
和 *(ptr2 + 1)
各自产生相同的值。此外,如果数组中间有指针,可以下标负数,这在Java等高级语言中是不允许的。所以,是的,它可以变得尽可能复杂