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

作者: battle7 (迪.阿倫)   2014-07-17 11:16:44
#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要指到下一個位址, 然後又是*號的話 又會指到下一個位址...
請問一下 這要何解@@
謝謝....
作者: scwg ( )   2014-07-17 11:31:00
用 . 或 -> 是看「左邊」的型別 t_A *a 所以用 a->b, t_A a的話用 a.b; 因此要決定 a->b->c ?? num 用 . 或 -> 要看那個c 是什麼型別。因為在 struct B 裡是 struct C *c, 所以用 ->另外, 語法改成可以編譯之後還是要注意, a->b 指的地方還沒初始化, 跑起來還是會出錯, 詳見置底第三誡
作者: battle7 (迪.阿倫)   2014-07-17 11:54:00
malloc 配置空間 不就是給他一個位址空間了嗎
作者: karose (karose)   2014-07-19 16:48:00
你只malloc了1個指標的空間。 另外*p不是位址加1。你可以用%p把每個位址印出來

Links booklink

Contact Us: admin [ a t ] ucptt.com