我用一个子函数初始化了一个结构体并返回结构体的地址,但是却发现在主函数中输出的num和str字符串和子函数中输出的不一样,主函数中输出的内容更像是一些乱码,但是两个函数中的地址是一致的,这是哪儿出现什么问题了吗?
代码如下,大家可以测试一下(这个代码并没有实际意义,就是在练习结构体时候瞎写的)
#include <stdio.h>
struct Test
{
int num;
char str[20];
};
struct Test * function();
int main()
{
struct Test *p = function();
printf("address : %p\n", p);
printf("num = %d\n", p->num);
printf("str = %s\n", p->str);
}
struct Test * function()
{
struct Test test =
{
10,
"hello world"
};
struct Test *p = &test;
printf("num = %d\n", p->num);
printf("str = %s\n", p->str);
printf("address : %p\n", p);
return p;
}
附上运行结果图:
第一行是子函数中的num
第二行是子函数中的str
第三行是子函数中返回的地址
第四行是主函数中接收到的地址
第五行是主函数中的num
第六行是主函数中的str