簡體   English   中英

將指向數組的指針傳遞給函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM