首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C-将结构变量传递给函数:分段故障

C-将结构变量传递给函数:分段故障
EN

Stack Overflow用户
提问于 2014-07-28 09:36:38
回答 5查看 827关注 0票数 1

上下文

这是我的密码

代码语言:javascript
复制
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=.)

你能解释一下吗?

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-07-28 09:37:45

您需要为kilo预留空间

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

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

别忘了在最后给free(kilo);打电话。

票数 4
EN

Stack Overflow用户

发布于 2014-07-28 09:41:09

在使用指针之前,应该分配内存。

你可以这样做:

代码语言:javascript
复制
polo *kilo = malloc(sizeof(polo));

代码语言:javascript
复制
polo temp;
polo *kilo = &temp;

剩下的代码就可以正常工作了。

票数 1
EN

Stack Overflow用户

发布于 2014-07-28 09:47:24

您需要为指针kilo分配内存。

代码语言:javascript
复制
int main()
{

polo *kilo;
kilo = malloc(sizfof(polo)); 
kilo->m = 84;
kilo->v = toto;

kilo->v(&kilo->m);
free(kilo);
return 0;

}

如果没有为结构指针分配内存,就无法将值存储在结构成员中。

但是当您声明polo kilo;时,它不需要内存分配。因为您被声明为一个结构变量。当您声明结构变量时,为其分配的内存os是静态的。所以它会成功的!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24992367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档