此代码段有什么问题?我收到Segmentation故障!
#include<stdio.h>
int main()
{
struct {
char* name;
int age;
} *emp;
char* empname = "Kumar";
int empage = 31;
emp->name = empname;
emp->age = empage;
printf("empname :%s\n",emp->name);
printf("empage :%d",emp->age);
return 0;
}
如何纠正这个程序?
答案 0 :(得分:9)
您没有为emp
分配内存。在使用emp
之前,请尝试
emp = malloc(sizeof(*emp));
答案 1 :(得分:1)
如果你测试你的代码放入汇编-Wall,终端会告诉你&#39; emp&#39;是未初始化的,因此你必须以动态的方式分配&#39; emp&#39; (malloc等等)。
int len_struct = sizeof(*emp);
emp = malloc(len_struct);
PS :这是我的建议:我更喜欢在全局内存中创建一个结构(在 Data 中)因为我认为这个结构你将来会用在prg中。
答案 2 :(得分:0)
您无需使用指向struct
或printf
的指针。
#include<stdio.h>
int main()
{
puts("empname :Kumar");
puts("empage :30");
return 0;
}