"而不是 "."访问结构会出现段错误-6ren"> "而不是 "."访问结构会出现段错误-我在 somefile.h 中创建了一个 typedef 结构,并在 somefile.c 中声明为 somestruct *mystruct; 并访问为 somevar = mystruct->va-6ren">
gpt4 book ai didi

c - 使用 "->"而不是 "."访问结构会出现段错误

转载 作者:行者123 更新时间:2023-11-30 21:41:49 25 4
gpt4 key购买 nike

我在 somefile.h 中创建了一个 typedef 结构,并在 somefile.c 中声明为

somestruct *mystruct;

并访问为

somevar = mystruct->variable;

然后它会产生“段错误”(可能是 StackOverflow,因为有一个“while”循环)。但如果我用它作为

somestruct mystruct;
somevar = mystruct.variable;

那就没问题了。

怎么了?

最佳答案

somestruct *mystruct 定义了一个指向 somestruct 类型内存的指针,并且不指向任何东西,或者如果它是局部变量则更好,那么它不会被初始化,这是未定义的行为

如果你这样做somestruct mystruct,那么你定义了结构本身而不是指针(对象存在于内存中)。

要使用指针访问,您应该为结构保留内存,例如:

somestruct *mystruct = malloc(sizeof(*mystruct));
mystruct->variable = 5;

或者您也可以这样做:

somestruct mystruct; //Create my structure in memory
somestruct *mystruct_ptr = &mystruct; //Create pointer to that structure and assign address
mystruct_ptr->variable = 10; //Write to mystruct using pointer access

关于c - 使用 "->"而不是 "."访问结构会出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com