Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 分段故障_C_Segmentation Fault - Fatal编程技术网

C 分段故障

C 分段故障,c,segmentation-fault,C,Segmentation Fault,这段代码有什么问题?我有错了 #include<stdio.h> int main() { struct { char* name; int age; } *emp; char* empname = "Kumar"; int empage = 31; emp->name = empname; emp->age =

这段代码有什么问题?我有错了

#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;
}
#包括
int main()
{
结构{
字符*名称;
智力年龄;
}*环境管理计划;
char*empname=“Kumar”;
int empage=31;
emp->name=empname;
emp->age=empage;
printf(“empname:%s\n”,emp->name);
printf(“empage:%d”,emp->age);
返回0;
}

如何纠正这个程序以使其正常工作

您没有为
emp
分配内存。在使用
emp
之前,请尝试

emp = malloc(sizeof(*emp));

您不需要使用指向
struct
printf
的指针

#include<stdio.h>
int main()
{
    puts("empname :Kumar");
    puts("empage :30");
    return 0;
}
#包括
int main()
{
看跌期权(“empname:Kumar”);
认沽权(“市值:30”);
返回0;
}

如果您在编译墙中测试代码,终端会告诉您“emp”未初始化,因此您必须以动态方式分配“emp”(malloc等)


PS:这是我的建议:我更喜欢在全局内存(在数据中)中创建一个结构,因为我认为您将来会在prg中使用这个结构

你需要买一本关于C编程的书,学习指针。从一开始就掌握基本知识很重要,否则以后会给你带来麻烦。sizeof(emp),否则你会得到指针的大小…@yankee不,
emp
是指针,
*emp
是指向的对象:-)好的,今天学习了一些关于C的知识:-)。@nil来格式化我的帖子,我是否需要将代码放在一对`?比如
emp=malloc(sizeof(emp))
或stackoverflow在过帐之前是否有任何文档或工具可以这样做?而且,我已经很久没有使用c语言了,你说得对。最近我正在使用java语言。另外,你能告诉我StackOverflow的规则(过账规则)吗?@vchitta
int len_struct = sizeof(*emp);
emp = malloc(len_struct);