[問題] 如何存取struct 成員變數

看板C_and_CPP (C/C++)作者 (迪.阿倫)時間11年前 (2014/07/17 11:16), 11年前編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/1
#include<stdio.h> #include<stdlib.h> struct C { int num; char *str; }; struct B { struct C *c; }; typedef struct A { struct B *b; }t_A; int main() { t_A *a=(t_A *)malloc(sizeof(t_A)); a->b->c.num=5; printf("%d",a->b->c.num); //a->b->c->str="test"; //printf("%s",a->b->c->str); system("pause"); return 0; } ================================= 請問一下 要如何改 才能使用num and str這二個變數@@? 如果宣告成 t_A a1; a1.b->c.num=5; 這是我的理解@@... 雖然編譯是錯的... 基本上 只要是*a 我就想成 a要指到下一個位址, 然後又是*號的話 又會指到下一個位址... 請問一下 這要何解@@ 謝謝.... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.190.25 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1405567009.A.4C1.html

07/17 11:31, , 1F
用 . 或 -> 是看「左邊」的型別 t_A *a 所以用 a->b, t_A a
07/17 11:31, 1F

07/17 11:32, , 2F
的話用 a.b; 因此要決定 a->b->c ?? num 用 . 或 -> 要看那個
07/17 11:32, 2F

07/17 11:33, , 3F
c 是什麼型別。因為在 struct B 裡是 struct C *c, 所以用 ->
07/17 11:33, 3F

07/17 11:37, , 4F
另外, 語法改成可以編譯之後還是要注意, a->b 指的地方還沒
07/17 11:37, 4F

07/17 11:38, , 5F
初始化, 跑起來還是會出錯, 詳見置底第三誡
07/17 11:38, 5F
請教 scwg大大 a->b 請問一下 這要怎麼初始化@@ 謝謝 ※ 編輯: battle7 (220.130.190.25), 07/17/2014 11:53:19

07/17 11:54, , 6F
malloc 配置空間 不就是給他一個位址空間了嗎
07/17 11:54, 6F

07/19 16:48, , 7F
你只malloc了1個指標的空間。 另外*p不是位址加1。
07/19 16:48, 7F

07/19 16:51, , 8F
你可以用%p把每個位址印出來
07/19 16:51, 8F
文章代碼(AID): #1Jnq0XJ1 (C_and_CPP)
文章代碼(AID): #1Jnq0XJ1 (C_and_CPP)