我正在尝试修改函数中数组的元素。当保留在main中时,此方法运行良好,但是当我将其移植到函数中时,在访问数组的第一个成员后它会出现段错误。
下面的代码只是我实际代码的简化版本,以显示我在哪里遇到段错误。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
unsigned short id;
} voter;
void initialise(voter** votersPtr, unsigned short *numOfVoters) {
*votersPtr = malloc(sizeof(voter)*(*numOfVoters));
for(int i = 0; i < *numOfVoters; i++) {
votersPtr[i]->id = (unsigned short) i;
printf("%hu \n", votersPtr[i]->id);
}
}
int main(void) {
unsigned short numOfVoters = 480;
voter* voters = NULL;
initialise(&voters, &numOfVoters);
return EXIT_SUCCESS;
}
任何帮助将不胜感激,谢谢。
的类型voter **
是不明确或者是指向指针数组到voter
对象或一个指针的指针的阵列voter
对象。您的代码将其用作第一个,但应将其用作第二个。改变
votersPtr[i]->id = ...
到
(*votersPtr)[i].id = ...
一切都会正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句