社区
C语言
帖子详情
指针 我还得问以下。。。
BJUTmark
2008-06-23 05:26:45
int a[3]={0,1,2};
int (*p)[3]=&a;
是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
...全文
176
17
打赏
收藏
指针 我还得问以下。。。
int a[3]={0,1,2}; int (*p)[3]=&a; 是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hfgongheguo
2008-06-23
打赏
举报
回复
mark 下 , 加深一下理解
lwouyang
2008-06-23
打赏
举报
回复
上面很拗口,捡例子说吧。
对数组中第二个元素的引用方法:
a[1]
*(a+1)
(a+1)[0]
*(&a[0]+1)
(&a)[0][1]
*((&a)[0]+1)
*(&a+1)[0] ==> 错了!
p[0][1]
(*p)[1]
*p[1] ==> 错了!
*(p[0]+1)
*(*p+1)
*(*(p+1)) ==> 错了!
lwouyang
2008-06-23
打赏
举报
回复
1、a 是一个指针,其值是一个地址,也就是说 a 指向一个包含3个int类型的数组的首地址;
2、p 是一个指针,其值是 a,也就是说 p 指向 a;
因为 a 已经是指针,所以 p 是二级指针;
因为 a 指向一个包含3个int类型的数组的首地址( a[1] ==〉 1 ),
所以 p 是一个指向一个包含3个int类型的数组的首地址的指针的指针( p[0] ==〉 a, p[0][1] ==〉 1, p[1] ==〉错了!)。
{ 0, 1, 2}
↑
a
↑
p
Holinan
2008-06-23
打赏
举报
回复
[Quote=引用楼主 BJUTmark 的帖子:]
int a[3]={0,1,2};
int (*p)[3]=&a;
是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
[/Quote]
p是一个指针,他指向的内容是一个数组,这个数组里面存了3个整形数。
所以p其实就是指向了数组a的首地址
superIT3107
2008-06-23
打赏
举报
回复
[Quote=引用楼主 BJUTmark 的帖子:]
int a[3]={0,1,2};
int (*p)[3]=&a;
是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
[/Quote]
a已经是地址了
&又是地址的意思
那么&a就是地址的地址
所以int (*p)[3]=&a;就是3个int指针类型的数组的首地址
长安宁
2008-06-23
打赏
举报
回复
int *p[3];这个是一个有三个元素的数组,里面的每个元素都是 int *型;
而int (*p)[3];是一个指向三个元素数组的指针
所以 int (*p)[3]=&a[3]; 正好内在模型匹配,而数据名可以代表数组,所以简写成 int (*p)[3]=&a;
yyyapple
2008-06-23
打赏
举报
回复
[Quote=引用 3 楼 dennis101 的回复:]
错了。
3个int指针类型的数组,定义应是int *p[3];
int (*p)[3]中p是一个指向长度为3的int数组的指针。
前者是指向指针的数组,后者是指向数组的指针,请仔细体会。
[/Quote]
chenhj_wo
2008-06-23
打赏
举报
回复
问题没看懂
ww2734
2008-06-23
打赏
举报
回复
看似有些不妥,
int (*p)[3]=&a;
前面是二级的,后面是一级的……
ww2734
2008-06-23
打赏
举报
回复
看似有些不妥,
int (*p)[3]=&a;
前面是二级的,后面是一级的……
星空Neo
2008-06-23
打赏
举报
回复
p[0][0]=0
p[0][1]=1
p[0][2]=2
K行天下
2008-06-23
打赏
举报
回复
楼主说的有错误:
int a[3]={0,1,2};
int (*p)[3]=&a;
是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
应该是表示一个指向 含有3个int整型的数组的 指针
你的理解是 int* p[3];这是一个数组,每一个成员都是int*这个类型!
q06380925
2008-06-23
打赏
举报
回复
[Quote=引用 3 楼 dennis101 的回复:]
错了。
3个int指针类型的数组,定义应是int *p[3];
int (*p)[3]中p是一个指向长度为3的int数组的指针。
前者是指向指针的数组,后者是指向数组的指针,请仔细体会。
[/Quote]
楼上正解
day572
2008-06-23
打赏
举报
回复
如下就是这样
typedef int a[3];
a *p;
p就是这样意思.
dennis101
2008-06-23
打赏
举报
回复
错了。
3个int指针类型的数组,定义应是int *p[3];
int (*p)[3]中p是一个指向长度为3的int数组的指针。
前者是指向指针的数组,后者是指向数组的指针,请仔细体会。
maomingxu13
2008-06-23
打赏
举报
回复
对呀,把指针数组p指向了数组a的起始地址,所以p就是原来的a了!
ForestDB
2008-06-23
打赏
举报
回复
yeeeeeees.
C语言
69,322
社区成员
243,077
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章