社区
新手乐园
帖子详情
一个小问题,关于指针的
snowingbf
2007-10-13 11:31:06
设int s[3][2]={1,2,3,4,5,6},(*p)[2]=s;,则*(*(p+1)+1)的值是__________
p是指向指针的指针么?
这道题应该怎么理解?
...全文
143
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。
C/C++
指针
的13份资料
C/C++
指针
的13份资料 内容丰富,让编程人员不再害怕
指针
免费下载:C语言难点分析整理.doc
1. C 语言中的
指针
和内存泄漏 5 2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中
指针
和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. C编程拾粹 42 10. C语言中实现数组的动态增长 44 11. C语言中的位运算 46 12. 浮点数的存储格式: 50 13. 位域 58 14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇 107 21. C语言编程常见
问题
分析 108 22. C语言编程易犯毛病集合 112 23. C语言缺陷与陷阱(笔记) 119 24. C语言防止缓冲区溢出方法 126 25. C语言高效编程秘籍 128 26. C运算符优先级口诀 133 27. do/while(0)的妙用 134 28. exit()和return()的区别 140 29. exit子程序终止函数与return的差别 141 30. extern与static存储空间矛盾 145 31. PC-Lint与C\C++代码质量 147 32. spirntf函数使用大全 158 33. 二叉树的数据结构 167 34. 位运算应用口诀和实例 170 35. 内存对齐与ANSI C中struct内存布局 173 36. 冒泡和选择排序实现 180 37. 函数
指针
数组与返回数组
指针
的函数 186 38. 右左法则- 复杂
指针
解析 189 39. 回车和换行的区别 192 40. 堆和堆栈的区别 194 41. 堆和堆栈的区别 198 42. 如何写出专业的C头文件 202 43. 打造最快的Hash表 207 44.
指针
与数组学习笔记 222 45. 数组不是
指针
224 46. 标准C中字符串分割的方法 228 47. 汉诺塔源码 231 48. 洗牌算法 234 49. 深入理解C语言
指针
的奥秘 236 50. 游戏外挂的编写原理 254 51. 程序实例分析-为什么会陷入死循环 258 52. 空
指针
究竟指向了内存的哪个地方 260 53. 算术表达式的计算 265 54. 结构体对齐的具体含义 269 55. 连连看AI算法 274 56. 连连看寻路算法的思路 283 57. 重新认识:指向函数的
指针
288 58. 链表的源码 291 59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的
指针
学习笔记 325 63. 程序员之路──关于代码风格 343 64.
指针
、结构体、联合体的安全规范 346 65. C
指针
讲解 352 66. 关于指向
指针
的
指针
368 67. C/C++ 误区一:void main() 373 68. C/C++ 误区二:fflush(stdin) 376 69. C/C++ 误区三:强制转换 malloc() 的返回值 380 70. C/C++ 误区四:char c = getchar(); 381 71. C/C++ 误区五:检查 new 的返回值 383 72. C 是 C++ 的子集吗? 384 73. C和C++的区别是什么? 387 74. 无条件循环 388 75. 产生随机数的方法 389 76. 顺序表及其操作 390 77. 单链表的实现及其操作 391 78. 双向链表 395 79. 程序员数据结构笔记 399 80. Hashtable和HashMap的区别 408 81. hash 表学习笔记 410 82. C程序设计常用算法源代码 412 83. C语言有头结点链表的经典实现 419 84. C语言惠通面试题 428 85. C语言常用宏定义 450
C/C++
问题
:
一个
指针
的大小是多少?怎么理解
指针
变量的存在
上面的struct占401个字节,那么指向它的
指针
也占401个字节,然而这只是
一个
错误的经典理解。不管指向什么,
指针
的大小都是固定的,都是跟内存的地址一样长。既然
指针
存储的是内存的地址,而内存的地址在32位架构上是4个字节;const处在变量声明中不同位置的时候,效果是不一样的;这些区块就像一些房子,我们可以给他们依次编号,这里需要注意的是,现在计算机内存的最小单位是
一个
字节而不是
一个
比特;每个元素都是指向int的
指针
或者更符号汉语习惯的v是
一个
有5个指向int的
指针
的数组,那么加上括号又是个什么意思呢?
为何64位下
一个
指针
大小为8个字节?
通俗理解
指针
对于C/C++/OC等语言中,经常会在代码中看到
指针
这个玩意,并且对于多数小伙伴们来说,可能
指针
这个东西也是属于学习一门语言时的
一个
难点和痛点,也有可能好多小伙伴都工作好些年了,对于
指针
的理解仍然是处于一种云里雾里的状态,可能原因就在于网上很多文章以及很多书上对于
指针
的描述都是过于书面化。 今天我在这里就先好好的讲述一下
指针
的通俗理解。 说到
指针
,首先我们得开始从变量说起(或者...
C语言的
指针
大小
问题
一说到
指针
的大小很多人都会想到int型,char型,double型,然后觉得不同类型的
指针
所占内存大小不同,其实这是一种误区. 因为
指针
其实就是
一个
无符号整形,
一个
整数而已,它的大小取决于你的系统是16 32 还是64位的 16/8=2byte 32/8=4byte 64/8=8byte . 但是你会问为什么我的系统是64位的,但是我的
指针
却是32位的4字节
指针
.这个也很简单解释
新手乐园
33,316
社区成员
41,771
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章