catch 发表于 2014-6-30 12:51:37

结构体的问题:

#include <stdio.h>
#include <stdlib.h>

struct A
{
    int a;
    long b;
}p1;

struct B
{
    int a1;
    long b1;
    struct A AA;
}p2;



int main()
{
    p1.a = 1;
    printf("-----%d------\n",p2.AA.a);
}

这个输出为什么不是 1,而是 0 ?

未闻丶花名 发表于 2014-6-30 13:05:28

你把1赋值给了p1的a,而p2中的结构体变量AA却没有获得初值,即AA中的a没有初值也就默认为0,所以输出的是0而不是1,看清楚只有p1中的a才是1,p2跟P1是没什么关系的

catch 发表于 2014-6-30 13:08:14

未闻丶花名 发表于 2014-6-30 13:05 static/image/common/back.gif
你把1赋值给了p1的a,而p2中的结构体变量AA却没有获得初值,即AA中的a没有初值也就默认为0,所以输出的是0而 ...

我把结构体里面的a赋值过以后,这个值就固定了,可以直接访问的啊,要不然结构体里面的结构体定义还有什么意义呢?

catch 发表于 2014-6-30 13:14:28

本帖最后由 catch 于 2014-6-30 13:16 编辑

流行语 发表于 2014-6-30 13:18:33

p1和p2是两个不同的变量,它们在内存中开辟的存储空间是不同的。你对p1.a赋值只会存自己的值,不会影响p2.AA.a中的值。

未闻丶花名 发表于 2014-6-30 13:20:42

AA是另外一个结构体A的变量,而p1是一个全局的结构体A变量,但是你访问的却是AA结构体变量,所以自然是0啊

catch 发表于 2014-6-30 13:21:50

流行语 发表于 2014-6-30 13:18 static/image/common/back.gif
p1和p2是两个不同的变量,它们在内存中开辟的存储空间是不同的。你对p1.a赋值只会存自己的值,不会影响p2.A ...

如果我要用一个结构体去访问另一个结构体里面的变量应该怎么做?

catch 发表于 2014-6-30 13:26:38

struct Test{
      struct Test1 *t1;
      struct Test2 *t2;
      struct Test3 *t3;
      struct Test4 *t4;
      struct Test5 *t5;
      struct Test *t;
};


像这样的定义不就是为了去访问其他结构体里面的变量吗?

流行语 发表于 2014-6-30 17:33:39

本帖最后由 流行语 于 2014-6-30 17:41 编辑

你看一下这个,p1 和p2中的AA指向的内存地址是不一样的。
你可以直接打印出地址。
printf("%d\n",&p1);
printf("%d",&p2.AA);
你就会知道它们根本不是指向同一个地址。

catch 发表于 2014-6-30 17:46:25

流行语 发表于 2014-6-30 17:33 static/image/common/back.gif
你看一下这个,p1 和p2中的AA指向的内存地址是不一样的。
你可以直接打印出地址。
printf("%d\n",&p1);


那怎么访问一个结构体里面的结构体变量呢?

catch 发表于 2014-6-30 17:51:21

本帖最后由 catch 于 2014-6-30 17:57 编辑

catch 发表于 2014-6-30 17:46 static/image/common/back.gif
那怎么访问一个结构体里面的结构体变量呢?

戏++ 发表于 2014-6-30 18:11:54

p1,p2的内存空间都不一样,两者毫不相干

打印地址看看

printf("0x%p,0x%p",&p1,&p2);

printf is very important

流行语 发表于 2014-7-1 09:36:50

哥们,p1和p2.AA的地址不一样了,肯定在自己的存储空间中存储自己的东西,所以p2.AA.aa怎么会输出1呢。这就好比两间房子A和B,A,B各自保存自己的东西。例如A中放了一个美女,B中没有放。那你在B中怎么会看见美女呢。

喜欢散步 发表于 2014-7-2 05:24:43

catch 发表于 2014-6-30 17:51 static/image/common/back.gif


catch 发表于 2014-7-2 08:36:45

喜欢散步 发表于 2014-7-2 05:24 static/image/common/back.gif


似乎明白了,谢谢~
页: [1]
查看完整版本: 结构体的问题: