尝试初始化结构数组时出现段错误

金宝

我只是试图使用c中的单独函数初始化结构数组,但是当我调用该函数时,由于seg错误,它将导致程序崩溃。

我要做的就是初始化值,并使用大小为na常数20的循环将pos =设置为k + 1,任何人都可以帮忙,也许他们是我完全想不到的东西,谢谢。

代码:

  #include <stdio.h>
    #define n 20
    
    typedef struct history {
        char* value;
        int pos;
    } hist;

hist* history_struct[n];

void init_struct() {
    /* this function will create an array of structs of size 20*/
    for (int k = 0; k < n; k++) {
        history_struct[k]->value = (hist*) malloc(sizeof(hist*));
        history_struct[k]->pos = k+1;
        printf("indexes = %d ", history_struct[k]->pos);
    }
    
}
詹姆士

我相信您已经声明了一个指向结构的指针数组,对代码的简单清理将使您从您似乎拥有的空指针中脱颖而出。如果value只是一个char *,您也以一种怪异的方式使用malloc,那么只需使用,sizeof(char*)而无需强制转换

hist history_struct[n];

    void init_struct() {
        /* this function will create an array of structs of size 20*/
        for (int k = 0; k < n; k++) {
            history_struct[k].value = malloc(sizeof(char*));
            history_struct[k].pos = k+1;
            printf("indexes = %d ", history_struct[k].pos);
        }
        
    }

所以我们删除了指针,这意味着我们回到了点符号,而不是“->”,因为我们不再使用指针,希望这对您的问题有所帮助并解决了所有其他问题,只是问我

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试初始化结构向量时出现编译错误

初始化pthread_t数组时出现段错误

在C ++中初始化数组时出现段错误(项目Euler号3)

初始化数组时出现分段错误

当我想用它的地址初始化一个二维字符数组时出现段错误

尝试使用const初始化变量时出现错误“初始化元素不是常量”

尝试实例化新类时出现未初始化的常量错误

尝试继续或实例化到 vc 时出现初始化错误

C:初始化带有tin结构的指针时出现分段错误

当我尝试在属性初始化中使用 nameof 时出现错误 cs0120

尝试初始化iOS AppsFlyer SDK时出现SIGABRT错误

尝试在 SDK 中验证/初始化 IBM Watson 服务时出现语法错误

尝试创建客户端时出现“未初始化的常量”错误

尝试包含类/对象关联时出现未初始化的常量错误

尝试在C中初始化结构时出错

初始化结构数组

尝试初始化Java接口时出现NullPointerException

尝试初始化数组列表时如何解决此错误?

使用构造函数初始化列表初始化结构时出现问题

初始化对象的数组网格时出现空点错误

初始化2D数组时出现分段错误

初始化多维数组时出现“预期表达式”错误

尝试使i = i * i时,为什么出现错误“使用未初始化的内存'i'”和“使用了未初始化的局部变量'i'”的错误

尝试使用两个初始化程序列表初始化2D结构数组时发出警告

使用宏时C数组的结构初始化问题

尝试初始化动态数组时未处理异常

如何初始化结构数组的结构?

初始化数组列表时出现Java nullpointerException

初始化数组时出现StackOverflow异常