上下文
这是我的密码

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不再是指针,同样的代码也可以工作(马球公斤;公斤.m=…)。
你能解释一下吗?
谢谢

最佳答案

您需要为kilo预留空间:
polo *kilo = malloc(sizeof(*kilo));

polo *kilo = malloc(sizeof(polo));
别忘了在最后打电话给free(kilo);

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

10-13 08:23