指针中int(*p)【4】是什么意思?

 我来答
洛学智栗芬
2020-04-19 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:32%
帮助的人:738万
展开全部
我自己写程序实验结果是这样的
int
(*p)[4];定义的是一个指向包含4个元素int数组的指针
也就是说当定义p=a时,p指向a[0][0],而p+1指向a[1][0]。p+1地址比p增长了16个字节,也就是4个int变量的大小。p代表a的第一行,p+1代表a的第二行...
如果定义int
*p那么这就是一个指向int型变量的指针
当定义p=a时,p指向a[0][0],而p+1指向a[0][1]。
每次加1,p中的地址加4个字节,也就是一个int变量的大小。
让凝云容喜
2019-04-20 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:736万
展开全部
这是个数组指针,它指向的是一个数组,这个数组里面有四个元素,
为什么要加[4]

当P=a;之后,
P++;
//看看
执行这条语句后的结果
没有[4]
,那么P这时指向的是a[0][1]的地址。
有了[4]
,那么P这时指向的是a[1][0]的地址。
你看出有什么不同了吗,第一条指针加1,地址加1
而下面的是指针加1,地址加4,
这个4就是“[4]”的作用之所在了。
希望对你有帮助!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓟飞虎唐爱
2019-11-15 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:743万
展开全部
这个是行指针。
你试试用sizeof(*a)运算符sizeof(*p)就知道是怎么一回事了。
试试下面代码,看结果是什么样的:
#include
int
main()
{
int
a[3][4]
=
{
{1,2,3,4},
{5,6,7,8},
{9,0,1,2}
};
int
(*p)[4];
int
*p1
=
(int
*)a;
p
=
a;
int
i;
for
(i
=
0;
i
<
3;
i
++)
printf("p1[%d]=%d,
p[%d]=%d,
p[%d][0]=%d\n",
i,
p1[i],
i,
p[i],
i,
p[i][0]);
return
0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大雯丽塞琛
2019-06-26 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:576万
展开全部
这个差别是做一个强制类型转换

p初始是指向一个结构体的指针,那么p++的意义是使得指针移动sizeof(*p)大小的空间。如果是int*类型的
那么p++就是移动4个字节(c++中)
这样指向的是同一个内存区,但是访问的时候
读取的内容会有区别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式