2个回答
展开全部
数组指针,用楼上的话就是指向数组的指针,操作指针就可以操作数组如下:
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
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
展开全部
指针数组 顾名思义 保存指针的数组 数组能保存整形 长整型 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; 你再试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询