我记得当我第一次开始学习C时,有人告诉我“指针算法很难”。我不完全明白它有什么困难吗?
arr[i]
== *(arr + i)
*ptr = arr[2]
然后*ptr + 1 = arr[3]
这真的是它的全部,因为这些概念都没有我想象的那么难吗?
答案 0 :(得分:0)
好吧,如果你的意思是最后一个*(ptr + 1) = arr[3]
,那么你似乎已经掌握了它。将下标运算符([]
)替换为指针:
arr[3] === *(arr + 3)
不是很难。什么变得棘手的是当你有指针指向数组的中间,然后必须记住它们在数组中的位置,以便你知道要索引什么。因此,如果ptr1
指向数组的开头,而ptr2
指向索引3,那么 *(ptr1 + 4)
和 *(ptr2 + 1)
各自会产生相同的值。此外,如果在数组中间有指针,则可以使用负数下标,这在Java等高级语言中是不允许的。所以是的,它可以变得像人们关心的那样复杂。