我只是试图使用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] 删除。
我来说两句