看板 C_and_CPP 關於我們 聯絡資訊
如題 最近閱讀程式碼時,看到了不太清楚的用法 在實驗的時候發現 對結構(不是結構指標)用「.」和用「->」的結果一樣 例如: struct test { int a; int b; int c; }; struct test test = {1, 2, 3}; test.a == test->a == 1; test.b == test->b == 2; 我對->的理解是a->b = (*a).b,但好像不是如此? 這是為什麼呢?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.109.131.39 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1542709800.A.D59.html
CMJ0121: gcc (GCC) 8.2.1 20180831 對 struct 直接用 -> 會編譯11/20 18:34
CMJ0121: 失敗11/20 18:34
wei115: !?真假,我是用GDB實驗的,沒有實際編譯過11/20 18:39
wei115: 我回去再試試看QQ11/20 18:40
在公車上用筆電實驗 發現真的沒辦法用gcc編譯過(可以用gdb ->) 然後被嚇到重新看了一下扣,發現我完全理解錯意思了 QQ肚子太餓了,思考能力都出問題了(難怪我一直Google不到...) 抱歉浪費大家的時間了m(_ _)m 要不要自刪啊QQ
james732: 不要自刪啦,把你犯的錯補充上來就好 11/20 18:54
chuegou: 可以補充啦造福後人 這板也不允許你刪吧 11/20 19:25
b0920075: 自刪等劣退 11/20 21:06
QQ自己的烙賽要流芳百世惹
me356500: 宣告指標結構才會這樣用ㄅ? 11/20 21:27
CMJ0121: 剛剛試了 GDB 8.2 得到跟原 PO 一樣的結論 11/20 23:12
CMJ0121: 在 GDB 對變數用 . 跟 -> 都是拿到 struct 的 member 11/20 23:14
本來以為GDB可以這樣用GCC也可以 就沒有用GCC去測試了QQ ※ 編輯: wei115 (122.118.213.36), 11/21/2018 00:32:03
jamfly: -> 只是對指標的語法糖衣而已 11/21 09:31
Vent: 之前看一個國外講struct pointer的影片,那個講師說他不太 11/21 11:38
Vent: 懂為啥是用->,他一開始都是用(*a).的形式來理解a-> 11/21 11:38
bibo9901: 我也好奇, 既然編譯器知道a是指標還是struct, 為什麼要 11/23 01:46
bibo9901: 逼我使用不同的語法? 11/23 01:46
uranusjr: 在 C++ 裡 -> 可以 override 所以這兩個不見得一樣 11/25 14:58
uranusjr: 不過為什麼當初 C 要這樣設計就只能問作者了, 不過我想 11/25 14:59
uranusjr: 這應該也是很合理的設計, 否則光想一個變數是不是指標就 11/25 14:59
uranusjr: 會很頭大, 別忘了那年代沒有 IDE, 變數型別只能自己記得 11/25 15:00
sarafciel: 你要寫(*ptr).mem也可以呀 ptr->mem本來就是語法糖 11/26 17:42
dces4212: C裡面. 用在操作實體 而 -> 用在操作指標中的實體 12/17 16:45