PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] C裡面對結構用.和用->的結果一樣
作者:
wei115
(ㄎㄎ)
2018-11-20 18:29:56
如題
最近閱讀程式碼時,看到了不太清楚的用法
在實驗的時候發現
對結構(不是結構指標)用「.」和用「->」的結果一樣
例如:
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,但好像不是如此?
這是為什麼呢?謝謝
作者:
CMJ0121
(請多指教!!)
2018-11-20 18:34:00
gcc (GCC) 8.2.1 20180831 對 struct 直接用 -> 會編譯失敗
作者:
wei115
(ㄎㄎ)
2018-11-20 18:39:00
!?真假,我是用GDB實驗的,沒有實際編譯過我回去再試試看QQ
作者:
james732
(好人超)
2018-11-20 18:54:00
不要自刪啦,把你犯的錯補充上來就好
作者:
chuegou
(chuegou)
2018-11-20 19:25:00
可以補充啦造福後人 這板也不允許你刪吧
作者:
b0920075
(Void)
2018-11-20 21:06:00
自刪等劣退
作者:
me356500
(呵呵)
2018-11-20 21:27:00
宣告指標結構才會這樣用ㄅ?
作者:
CMJ0121
(請多指教!!)
2018-11-20 23:12:00
剛剛試了 GDB 8.2 得到跟原 PO 一樣的結論在 GDB 對變數用 . 跟 -> 都是拿到 struct 的 member
作者:
jamfly
(jamfly)
2018-11-21 09:31:00
-> 只是對指標的語法糖衣而已
作者:
Vent
(Avec le Vent)
2018-11-21 11:38:00
之前看一個國外講struct pointer的影片,那個講師說他不太懂為啥是用->,他一開始都是用(*a).的形式來理解a->
作者:
bibo9901
(function(){})()
2018-11-23 01:46:00
我也好奇, 既然編譯器知道a是指標還是struct, 為什麼要逼我使用不同的語法?
作者:
uranusjr
(â†é€™äººæ˜¯è¶…級笨蛋)
2018-11-25 14:58:00
在 C++ 裡 -> 可以 override 所以這兩個不見得一樣不過為什麼當初 C 要這樣設計就只能問作者了, 不過我想這應該也是很合理的設計, 否則光想一個變數是不是指標就會很頭大, 別忘了那年代沒有 IDE, 變數型別只能自己記得
作者:
sarafciel
(Cattuz)
2018-11-26 17:42:00
你要寫(*ptr).mem也可以呀 ptr->mem本來就是語法糖
繼續閱讀
[問題] new int array的方法
TampaBayRays
[問題] VC++ WindowsForm + boost interprocess
twowater
[問題] if字串判斷
kent41914
[問題] 大一程設作業
aquilo
[問題] 大一程設 大數相加
aquilo
[問題] 從機率不同的幾個樣本中隨機抽出一個
shinjiyano
[問題] 大一程設遞迴問題
y995526
[問題] codeblock開不起來
david0426
[問題] struct array 引入sub function issue
viajimmy
[問題] 串列收到的16進制直接轉成字串
smvenjoy
Links
booklink
Contact Us: admin [ a t ] ucptt.com