社区
C语言
帖子详情
指针 我还得问以下。。。
BJUTmark
2008-06-23 05:26:45
int a[3]={0,1,2};
int (*p)[3]=&a;
是不是这时候P就是一个表示含有3个int指针类型的数组的首地址?
...全文
259
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语言中
指针
的概念,包括
指针
常量与常量
指针
的区别、
指针
运算的特点、
指针
与数组的关系、
指针
数组与数组
指针
的不同以及
指针
函数与函数
指针
的应用。
《编程千
问
》:第十七
问
:什么是函数
指针
?什么是
指针
函数?
本文聚焦C/C++编程,介绍了函数
指针
和
指针
函数。函数
指针
可存储函数地址,用于回调、事件处理等;
指针
函数返回
指针
,用于动态内存分配等。还阐述了二者底层原理,理解这些概念能更好发挥C++的灵活性和强大功能。
结构体
指针
,结构体成员有
指针
。。。
本文详细探讨了C语言中结构体与
指针
的关系,包括如何通过
指针
操作结构体成员,特别是当结构体成员本身包含
指针
时的处理方式。通过实例解析,阐述了
指针
在访
问
和修改结构体内部复杂数据结构时的关键作用,帮助读者深化对C语言内存管理和数据结构的理解。
指针
。。。
本文详细介绍了C语言中的
指针
概念,包括为什么使用
指针
(共享变量、提高效率、堆内存操作)、如何定义与使用
指针
、
指针
运算、
指针
与const的关系、
指针
数组与数组
指针
的区别、
指针
名与数组名的联系,以及二级
指针
和函数
指针
的应用。同时,讨论了堆内存的管理和使用,包括malloc、free、calloc和realloc函数。文章还提醒读者注意
指针
的潜在
问
题,如空
指针
、野
指针
的处理,并探讨了回调函数的概念。
C
指针
。。。
本文介绍了C语言中的
指针
概念,包括内存地址的获取、
指针
变量的声明与使用、NULL
指针
的处理,以及常见的
指针
运算和在函数中的应用。
C语言
70,037
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章