c++指针数组和数组指针

指针数组和数组指针有什么区别,分别有什么用途,该怎么用?好乱啊

数组指针,用楼上的话就是指向数组的指针,操作指针就可以操作数组如下:
int a[3] = {1,2,3};
int *p = a;
printf("数组指针:%d\n", *(p+1));
// 打印的结果为2,原因是p初始化指向了数组a的首地址,即a[0]。*(p+1)即先将地址向后挪动一位即指向了a[1],再取地址里面的值,即取a[1]的值,故结果为2。

指针数组,保存指针的数组:
int a1[2] = {1,2};
int a2[3] = {1,2,3};
int a3[4] = {1,2,3,4};
int* pArray[3] = {a1, a2, a3};
printf("指针数组:%d\n",*(pArray[2]+3));
//打印结果为4,原因是每个数组的数组名就是指向该数组第一个元素的指针。而pArray是存了3个指针的数组,pArray[2]就是指针a3,a3+3就是指向了a3的第4个元素,所以pArray[2]+3指向了a3的第4个元素。*(pArray[2]+3))就是取地址里面的值,故为4
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-03
指针数组 顾名思义 保存指针的数组 数组能保存整形 长整型 double float 对象 当然也可以保存指针 (虽然我从来没用过)。 数组指针 就是指向数组首地址的指针。 其实数组名就是数组指针 他指向的就是数组的首地址。。追问

可以举个例子吗?我自己写了几个代码,还是不太懂,你看看:
int a[3]={5,6,7};
int * p_a[3];
p_a[3]=&a[0];
cout<<*p_a[3];
输出的结果不是5而是1244988,这又是为什么呢?

追答

第三句换成 p_a[3]=a; 你再试试

相似回答