作者mazz (梅兹 ~(・ε・`))
看板C_and_CPP
标题[问题] 请教一题pointer的问题
时间Tue Apr 30 18:28:28 2019
开发平台(Platform): (Ex: Win10, Linux, ...)
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
这是写纸本考卷上的题目,所以上面那几项不知道要写什麽orz
如果有发文问题还请不吝指正
题目:假设a,b,c三变数分别存放在记忆体位置5000,6000,7000
1.int a = 35;
2.int *b = &a;
3.int **c = &b;
试求b , c , *c , **c , &c
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
补充说明(Supplement):
**c 和 &c 搞不清楚到底要怎麽看
如果这样发文格式有误还有请各位提出,谢谢
--
1F:推 lin79529: 不是我05/06 02:56
2F:嘘 buster37: 就是你05/06 03:04
3F:→ tom282f3: 不可能05/06 03:05
4F:推 buster37: 纳智捷05/06 03:06
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 120.114.181.124
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1556620116.A.F34.html
5F:→ school4303: 35 7000 04/30 20:15
6F:推 ko27tye: c是pointer to pointer 那做两次dereference会是? 04/30 20:15
7F:→ ko27tye: &操作放在=右边又是代表? 04/30 20:17
8F:→ mazz: 请问一下**c的含意是甚麽?是指向*c吗? 04/30 21:08
9F:推 allensheng: 是一个指向指标的指标 名字叫做c 04/30 21:23
10F:推 roytiu: 画个图就会比较好了解 名称(内容)-位址 04/30 21:35
11F:推 Gway: 5000 6000 6000 35 7000 ? 05/01 22:39
12F:→ Gway: 5000 6000 5000 35 7000才对 05/03 20:56
13F:推 arshuan: 去了解一下 复杂变数宣告的判读方式会比较清楚 google搜 05/04 12:11
14F:→ arshuan: 寻一下understand complicated declaration之类的 05/04 12:11
15F:推 arshuan: b是一个指标指向一个int a的位址 c是一个指标指向一个int 05/04 12:29
16F:→ arshuan: * b的位址 不加任何*或&的状况下就是印出那个变数本身 05/04 12:29
17F:→ arshuan: 存的data. 加*(dereference)就是把那个data视作address 05/04 12:29
18F:→ arshuan: 去取那个address内的data. **就是取两次而已 *c是把c 05/04 12:30
19F:→ arshuan: 所存的b位址视为位址然後取该位址的data也就是a的位址。 05/04 12:30
20F:→ arshuan: *(*c)就是再进一步把a的位址视为位址取该位址的data 05/04 12:30
21F:→ arshuan: 也就是35 05/04 12:30
22F:→ rouyu0741: &c = memory address of c = 7000 05/10 13:53
23F:→ rouyu0741: c = &b = memory address of b = 6000 05/10 13:53
24F:→ rouyu0741: *c = *(&b) = b = &a = memory address of a = 5000 05/10 13:53
25F:→ rouyu0741: **c = *(&a) = a = value of a = 35 05/10 13:54
感谢各位大大的协助!
※ 编辑: mazz (218.173.173.62), 05/12/2019 13:36:33