社区
新手乐园
帖子详情
一个小问题,关于指针的
snowingbf
2007-10-13 11:31:06
设int s[3][2]={1,2,3,4,5,6},(*p)[2]=s;,则*(*(p+1)+1)的值是__________
p是指向指针的指针么?
这道题应该怎么理解?
...全文
151
18
打赏
收藏
一个小问题,关于指针的
设int s[3][2]={1,2,3,4,5,6},(*p)[2]=s;,则*(*(p+1)+1)的值是__________ p是指向指针的指针么? 这道题应该怎么理解?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
晨星
2007-10-15
打赏
举报
回复
数组名和指针虽然不是一会事,但至少它们有一点是一样的:即都可以进行地址运算,也就是基于地址的加加减减。
而且,对任何一个指针或数组名x,*(x + 1)永远都等价于x[1](这也是为什么你写1[x]也能通过编译的原因,因为*(x + 1)跟*(1 + x)本来就应该是一样的)。
按照以上说的,由于内层的"*(p + 1)"等价于p[1],于是"*(*(p + 1) + 1)"就等价于*(p[1] + 1),即p[1][1]。
snowingbf
2007-10-15
打赏
举报
回复
*(p[1]+1) == (p[1])[1] == p[1][1]
不是一维数组么?
整形数组怎么又代表指针了呢?
求详解!
不是各位回答的不好,而是我实在的笨
snowingbf
2007-10-14
打赏
举报
回复
外边还有个括号呢,又解引用了一次 *( )
lw1a2
2007-10-14
打赏
举报
回复
p是一个指针,指向一个2维数组
s可以看作是一个2维数组,每维的元素又是一个3维数组
(p+1),指向s的第2维
*(p+1),指向s的第2维的3个元素的第1个
*(p+1)+1,指向s的第2维的3个元素的第2个
*(*(p+1)+1),s的第2维的3个元素的第2个值
ckt
2007-10-14
打赏
举报
回复
p是指向第一维的
*(p+1)第1行
*(p+1)+1 第1行第1个
所以为4
Soli
2007-10-14
打赏
举报
回复
上面那个搞得有点错位。
int (* p)[ 2 ];
| | | | |
5 2 1 3 4
按下面标的序号解读该声明式:
1.定义一个变量p
2.这个p是个指针
3.这个指针指向一个数组
4.这个数组长度为2
5.这是个整型数组
总之,这个声明是的意思是:定义一个指向长度为2的整型(一维)数组的指针变量p
解析原则是:一变量名为中心,逐层向外,先右后左,括号内优先。
Soli
2007-10-14
打赏
举报
回复
int (* p)[ 2 ];
| | | | |
5 2 1 3 4
按下面标的序号解读该声明式:
1.定义一个变量p
2.这个p是个指针
3.这个指针指向一个数组
4.这个数组长度为2
5.这是个整型数组
总之,这个声明是的意思是:定义一个指向长度为2的整型(一维)数组的指针变量p
解析原则是:一变量名为中心,逐层向外,先右后左,括号内优先。
Soli
2007-10-14
打赏
举报
回复
p == s
*(p+1) == p[1]
*(p[1]+1) == (p[1])[1] == p[1][1]
*( *(p+1) + 1 ) == p[1][1]
方括号[]是下标运算符,*为取内容运算符,
可以认为p[1]是执行了两步:指针p前移1步;取其内容
亦即:q = p+1;*q 即 *(p+1)
故 *(p+1) == p[1]
其他情况类推
王二牛放犇
2007-10-14
打赏
举报
回复
(*p)[2]=s 这条语句是指向数组行,还是数组列?有问题吧,如果这个不确定,那结果不一样
chen_liang747703
2007-10-14
打赏
举报
回复
看了半天高手们的留言才看懂了!真的是4啊!
哈哈!有收获。
zhouhong0801
2007-10-14
打赏
举报
回复
(*p)[2]是一个指针数组
*(p+1)是s[1]
*(p+1)+1就是s[1]中的第二个元素s[1][1],也就是4
eliuzhi
2007-10-14
打赏
举报
回复
不好意思,把逗号看成分号了,错了错了,结果应该是4。
eliuzhi
2007-10-14
打赏
举报
回复
这题对吗?
1:s可以理解为是一个int× 类型
2:题中(*p)[2]=s;可以解释为 (*p) 是一个int** 类型
3:那p 就是 int*** 类型
4:那*(p+1) 就是指向了一个未知的地址啊?
或者这样理解
(*p) = (*(p+0)) 和 *(p+1)没关系啊?
snowingbf
2007-10-14
打赏
举报
回复
p+1又是怎么和s的第二行关联起来的呢?
数组p是个整形数组还是指针数组呢?(*p)[0]和(*p)[1]怎么就代表S的两行了?
晕啊
zcy_2002
2007-10-14
打赏
举报
回复
int (*p)[2]
表示p是一个指针变量,它指向包含2个元素的一维数组.
*p 两侧的扩号不可缺省,如果写成*p[2],就变成了指针数组.
snowingbf
2007-10-14
打赏
举报
回复
s感觉是这个二维数组的首地址
那么(*p)[2]就应该是个指针了?我对(*p)[2]的含义不理解
snowingbf
2007-10-14
打赏
举报
回复
(*p)[2]=s;
这句是什么意思?
haozlee
2007-10-13
打赏
举报
回复
答案:4
/////////
p指向数组的第0行,p+1指向第1行,*(p+1)+1则指向第1行的第二个数,为4。
有关new出
一个
指针
,将该
指针
指向另
一个
指针
,释放不掉的
问题
本文探讨了在C++中管理
指针
时遇到的
问题
,特别是当
一个
指针
指向另
一个
已被释放的
指针
时如何避免错误。文章提供了一种通过将
指针
设置为空来安全释放内存的方法。
一个
有趣的
指针
问题
本文通过
一个
具体的C语言程序实例,展示了如何错误地使用结构体和
指针
导致程序异常终止的过程。详细分析了每一步操作的影响,特别是对结构体成员及
指针
间接引用时可能出现的
问题
。
关于
指针
的
一个
问题
本文探讨了
一个
C语言编程中常见的
问题
:在使用二维数组和
指针
时,如何正确地找到最大值并避免常见错误。通过具体代码示例,详细分析了为何在遍历数组后,直接输出
指针
指向的值会与预期的最大值不符。
解决
一个
冷门的空
指针
问题
本文介绍了
一个
在使用javabean与jsp的项目中遇到的空
指针
异常
问题
及解决方案。通过修改获取session属性的方法,成功解决了空
指针
异常。
关于
指针
的
一个
小
问题
本文探讨了C++ Primer 4th中习题5.18的
问题
,涉及使用vector存储指向string的
指针
。通过对比两种方法,解释了为何在读取vector时需要使用`new`操作符来避免野
指针
和数据覆盖的
问题
,以确保每个
指针
都指向不同的string对象。
新手乐园
33,316
社区成员
41,771
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章