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