This question already has answers here:
Is an array name a pointer?
                                
                                    (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/

10-14 12:31
查看更多