This question already has answers here:
Is an array name a pointer?
(9个答案)
5年前关闭。
假设数组
为什么我们不能做
实际上如何看待这两种情况?
(9个答案)
5年前关闭。
假设数组
int a[10]
。为什么我们不能做
a=a+1
?但是对于指针变量同样有效。int *ptr = a;
ptr = a+1;
实际上如何看待这两种情况?
最佳答案
因为数组位置是恒定的。
您不能更改a
的值,因为它表示数组的起始地址。移动它没有任何意义。
使用int *ptr;
,变量ptr
只是一个指针,当然可以设置为指向您喜欢的任何地方。
这里没有矛盾。它与函数有点像,函数的名称求值为其地址(称为“函数指针”),但是您也不能为其分配地址。
关于c - 数组和指针算术,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27399504/