C++数组指针问题,C++数组指针问题,C++数组指针问题,C++数组指针问题,

int arry[3] = { 1,2,3 };

    int * p = &arry[3];

    for (int i = 0; i < 3; i++) {

        p[i] = i + 1;

        cout << p[i] << endl;

    }

为什么p[i] 为啥等同于arry[i]

 

 

指针后面加[i]效果就是相当于数组。不过,运行这段程序会得到一个内存存取越界的结果。因为指针p指向arry[2],而后面的循环相当于存取了arry[5],越界了!如果是 int * p = &arry[0]; 就没有问题。

 

 

你这个程序写的有点问题吧?猜测你是想通过指针p实现对数组arry的每一个元素加1操作并输出。

但是你这里的指针p却指向了一个空?

数组的实质其实就是地址的连接,第一个地址指向arry[0]所代表的数值,就是1;以此类推

int *p是一个指针变量,通过取地址符'&'可以获得arry数组元素对应的地址,那么p就成了这个地址,

所以当你改变p指针所代表的地址指向的值时,arry数组的值也跟着改变了

特别说明的是:数组名字本身就是数组的首元素所代表的地址

 

 

第四行后面那个分号忘记打了。。。

我的疑问是,为什么指针p[i] 为啥等同于数组arry[i]

数组的本质是地址啊,指针指向了那个地址,p[i]不就等于了arry[i]吗?p[i]的地址值和arry[i]的地址值相同,那指向的值不就一样了吗?这很难理解吗????