c - 将结构变量传递给函数 : segfault

标签 c pointers struct segmentation-fault

上下文

这是我的代码

typedef struct {
    int m;
    int (*v)(int *restrict a);
} polo;

int toto(int *restrict a){
    printf("hello %d\n",*a);
}
int main()
{

    polo *kilo;
    kilo->m = 84;
    kilo->v = toto;

    kilo->v(&kilo->m);

    return 0;

}

问题

段错误。 我不明白为什么。如果 kilo 不再是指针,则相同的代码仍然有效。 (马球公斤;kilo.m=...)。

你能解释一下吗?

谢谢

最佳答案

您需要预留公斤的空间:

polo *kilo = malloc(sizeof(*kilo));

polo *kilo = malloc(sizeof(polo));

不要忘记在最后调用 free(kilo);

关于c - 将结构变量传递给函数 : segfault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24992367/

相关文章:

c++ - 如何创建指向 vector 的指针 vector

无法解释 C 中简单字符串操作的输出

c - scanf 加载 struct -> char[] 的问题

c++ - 使用无符号而不是有符号的 int 更有可能导致错误吗?为什么?

c - 字符串比较 - C

c - C语言中的移动蛇

c - 表达式如何求值?

c++ - 智能指针的模板特化与普通指针完全一样

c - 将结构数组传递给函数

c - 将一个结构中的信息存储到另一个结构中