[英]Passing a pointer to an array to a function
我正在嘗試修改函數中數組的元素。 這在保存在 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;
}
任何幫助將不勝感激,謝謝。
votersPtr[i]->id
,與(*votersPtr[i]).id
應該是(*votersPtr)[i].id
。
請記住, votersPtr
是一個指向數組指針的指針。
所以不應該是以下行:
votersPtr[i]->id = (unsigned short) i;
而是:
(*votersPtr)[i].id = (unsigned short) i;
類型voter **
是含糊任一個指向指針數組到voter
對象或一個指針的指針數組voter
對象。 您的代碼將其用作第一個,但應該將其用作第二個。 改變
votersPtr[i]->id = ...
到
(*votersPtr)[i].id = ...
一切都應該有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.