指针中int(*p)【4】是什么意思?
4个回答
展开全部
我自己写程序实验结果是这样的
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变量的大小。
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变量的大小。
展开全部
这是个数组指针,它指向的是一个数组,这个数组里面有四个元素,
为什么要加[4]
?
当P=a;之后,
P++;
//看看
执行这条语句后的结果
没有[4]
,那么P这时指向的是a[0][1]的地址。
有了[4]
,那么P这时指向的是a[1][0]的地址。
你看出有什么不同了吗,第一条指针加1,地址加1
而下面的是指针加1,地址加4,
这个4就是“[4]”的作用之所在了。
希望对你有帮助!
为什么要加[4]
?
当P=a;之后,
P++;
//看看
执行这条语句后的结果
没有[4]
,那么P这时指向的是a[0][1]的地址。
有了[4]
,那么P这时指向的是a[1][0]的地址。
你看出有什么不同了吗,第一条指针加1,地址加1
而下面的是指针加1,地址加4,
这个4就是“[4]”的作用之所在了。
希望对你有帮助!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是行指针。
你试试用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;
}
你试试用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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个差别是做一个强制类型转换
,
p初始是指向一个结构体的指针,那么p++的意义是使得指针移动sizeof(*p)大小的空间。如果是int*类型的
那么p++就是移动4个字节(c++中)
这样指向的是同一个内存区,但是访问的时候
读取的内容会有区别。
,
p初始是指向一个结构体的指针,那么p++的意义是使得指针移动sizeof(*p)大小的空间。如果是int*类型的
那么p++就是移动4个字节(c++中)
这样指向的是同一个内存区,但是访问的时候
读取的内容会有区别。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询