指针数组和数组指针的区别

*p[n](*p)[n]两者有什么区别吗?... *p[n] (*p)[n]两者有什么区别吗? 展开
 我来答
plmday
推荐于2017-09-17 · TA获得超过474个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:243万
展开全部
数组指针--指向数组的指针,是一个指针,其指向的类型是数组;指针数组--元素为指针的数组,是一个数组,其中的元素为指针。仔细研读下面的程序:
#include <stdio.h>

int
main(void)
{
int a[2][2] = {{1,2},{3,4}};
int (* p)[2];
char * s[2] = {"hello", "world"};

p = a;
printf("%d, %d, %d, %d\n", (*p)[0], (*p)[1], (*(p+1))[0], (*(p+1))[1]);
printf("%s %s\n", s[0], s[1]);

return 0;
}

顺便指出楼上犯的错误a++ = i;是错的,不信自己把你的程序跑跑看。正确的应该说
int a[10];

for(i = 0; i < 10; i++)
{
a[i] = i;
}

for(i = 0; i < 10; i++)
{
*(a+i) = i;
}
是等价的!
闪影JDF
2008-06-02
知道答主
回答量:23
采纳率:0%
帮助的人:0
展开全部
当然有区别了,指针数组存放的是都是指针,即数据类型是指针!
而数组指针是用指针指向一个数组!比如数组名本身也是指针!
例如:
for(i = 0;i < 10;i++)
{
a[i] = i;
}

for(i = 0;i < 10;i++)
{
*(a++) = i;
}
等效!!

呵呵!不好意思,本人刚学c一年,熟练不够,谢谢指出!!非常感谢!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
duxingxia356
2012-11-06
知道答主
回答量:12
采纳率:0%
帮助的人:1.3万
展开全部
第一个是指针数组,第二个是指向数组的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
桥芊苑双文
2020-03-29 · TA获得超过3871个赞
知道大有可为答主
回答量:3140
采纳率:25%
帮助的人:224万
展开全部
1、指针数组——存放指针的一个数组
比如int
*point_arr[5];
point_arr是一个指针数组,其每个元素point_arr[i]的类型是int
*
2、数组指针——指向一个数组的指针
比如
int
a[3]={1,2,3};
int
(*pa)[3]=
&a;
pa是指向数组a的一个指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
弘虹彩SA
2019-03-31 · TA获得超过3494个赞
知道大有可为答主
回答量:3077
采纳率:30%
帮助的人:453万
展开全部
我对这两概念也一直记不太清,下面是自己的理解
指针数组应该就是型如
*p[]是个里面都是放指针的数组,(要看这变量的类型一般就是把名字去掉int
*[]
就说明这数组的元素都是
int
*)
数组指针我估计是这种吧
(*p)[3]
这个代表P是个指向有3个元素的数组的指针,
如这样使用
int
(*p)[3],
a[3];
p
=
&a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式