[问题] 如何存取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