社区
新手乐园
帖子详情
一个小问题,关于指针的
snowingbf
2007-10-13 11:31:06
设int s[3][2]={1,2,3,4,5,6},(*p)[2]=s;,则*(*(p+1)+1)的值是__________
p是指向指针的指针么?
这道题应该怎么理解?
...全文
152
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出
一个
指针
,将该
指针
指向另
一个
指针
,释放不掉的
问题
问题
一: 在编写代码的时候,我遇到了这样
一个
问题
:定义
一个
指针
,将这个
指针
指向另外
一个
指针
,在完成特定功能的操作之后,定义的
指针
指向的那个
指针
可能已经被释放,而这时,如果需要释放定义的这个
指针
,就会报错。 代码如下:int* position=new int [10]; position=pos; . . . delete pos; delete position;// 这里会报错 定义了
一个
一个
有趣的
指针
问题
是从网上看到的
一个
例子:struct S{ int i; int * p;};void main(){ struct S s; int * p = &s.i; p[0] = 4; p[1] = 3; s.p = p; s.p[1] = 1; s.p[0] = 2;}问程序会在哪一行死掉~ 解答:程序运行到最后一行就会报出异常
关于
指针
的
一个
问题
#include<stdio.h> #define N 3 #define M 2 void InputArray(int *p); int main() { int i,j; int a[N][N]={0}; for(j=0;j<N;j++) { for(i=0;i<N;i++) { scanf("%d",&...
解决
一个
冷门的空
指针
问题
最近在
一个
项目中(javabean+jsp)遇到了
一个
空
指针
问题
, 感觉无错误,但不知为什么一直报空
指针
。 最后,将14行改为String str_UserID=(String)session.getAttribute("UserID"); 就不再报空
指针
了,可以正常运行。
关于
指针
的
一个
小
问题
任务:(《C++ Primer 4th》习题5.18)编写程序定义
一个
vector对象,其每个元素都是指向string类型的
指针
新手乐园
33,316
社区成员
41,770
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章