在C++语言中,如说明 int a[10], *pa=a; a[5]与pa[5]等价吗?什么时候不等价

2025-06-26 00:58:25
推荐回答(3个)
回答1:

二者等价,

不同的是可以在程序中的其它位置改变pa的值,但是不可以更改a的值,即:

pa=a+6;//这样的式子是合法的。

a=pa+1;//这样的式子是非法的。a是无法改动的

回答2:

int a[10];
int *pa = a;
这个时候a[5]和pa[5]是等价的

int a[10];
int *pa = &a[1];
这个时候a[5]和pa[5]是不等价的

等不等价,由pa指向的具体位置而定

回答3:

其实数组名a就是个常量指针,所以pa[5]与a[5]等价的,只是a是常量,不可修改,pa是变量,可以修改