PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] sizeof 与 语法问题
楼主:
tomjpsun
(汤姆熊)
2016-05-23 12:11:03
问题(Question):
各位板上大大请问一下:
1. 程式输出得到 sizeof 为 1, 怎么解释?(Class 连同 align space 共计 1 byte?)
2. &Slot::inner_var 明明在第二位置,为何输出为 member = 1 ?
谢谢各位!
下列程式执行得到:
size of A = 1
&slot = 0x7fff5140c9f8
member = 1
slot.*member = 0x10e7f50bc
a.get_program() = 0x10e7f50bc
程式码(Code):(请善用置底文网页, 记得排版)
https://goo.gl/gezaKC
作者:
fatrabitree
(胖兔子)
2016-05-23 13:19:00
没有member variable 而size不可为0 ->1
作者:
johnjohnlin
(嗯?)
2016-05-23 13:19:00
1. class 内只有宣告 struct 没有实体所以不占空间2. cout member function 是什么意思啊,有什么用如果真的是第几个的话也该是 0-index
作者:
loveflames
(咕啾咕啾魔法阵)
2016-05-23 14:02:00
因为A是empty class,大小为1
楼主:
tomjpsun
(汤姆熊)
2016-05-23 16:43:00
johnjhonlin:
https://goo.gl/jFJaUa
L537,544 使用时机感谢大大,原来 size 1 是因为这样,问题 1. 学习了!
作者:
LPH66
(-6.2598534e+18f)
2016-05-26 19:29:00
问题2: 因为 operator << (ostream&, ???) 这系列函式里没有吃 A::Slot::* 这种指标的东西, 所以编译器会找一个能够 implicit 转得过去的东西, 这里找到的是转成 bool而一个普通指标转成 bool 相当于检查是否为空指标这里显然这个指标并非空指标故转成 true, 最后就 cout 了另外两个前者是 Slot*, 后者是 cl_program (== int*)在这里由于它们能够 implicit 转成 void* 所以就是用它因此才会印出其位址出来(注意到由于成员指标和物件指标是两个东西, 后者可以转成void* 但前者不行)
继续阅读
[问题] msvc特殊语系字串编译问题
a2975313
[问题] 字串减字串?
art1
[问题] C语言简单习题求解
PanYX
[问题]量测函数执行时间差总是为0
psylove5566
[问题] c语言新手指标问题!
jeson60
十三诫增修--07:不可以在数值运算、赋值或比较中随意混用不同型别
wtchen
十三诫增修--06:你不可以只做 malloc(), 而不做相应的 free().
wtchen
[问题] 有关rand()问题
nick982009
[问题] OpenMP 如何确定每颗核心都有用到?
hardman1110
[问题] struct bit field
gn00618777
Links
booklink
Contact Us: admin [ a t ] ucptt.com