簡體   English   中英

為什么我的 function 不能使用 C 中的結構工作?

[英]Why doesn't my function work using structures in C?

我正在創建一個包含空間中站點位置的數組。 所以對於array[2] ,我還想說array[2].num = 2我希望每個站點都有一個從 0 到 N-1 的唯一站點編號num Output array[i].num的不同 i 值給出 0、1、32767。然而,為了增加 i,我希望看到從 0 到 N-1 的遞增值。

我對結構非常陌生,所以如果你能解釋我在哪里犯了錯誤,我將非常感謝你作為一個 noice 程序員的幫助。

 typedef struct site_t
{
    int num; // want to add more varaibels later hence type struct //
} site;
site fillStruct( site[], int);
int main()
{   int i;
    const int N = 20;
    site array[N];
    fillStruct(array, N);
    for (i = 0; i < N; i++) {
    printf("location of site %d\n", array[i].num);
}
}

site fillStruct(site array[], int size) {
    for (int k = 0; k < size; k++) {;
        array[k].num = k;   
        return array[k];
        } 

}

如果我正確理解您的問題,我認為您的問題來自您的fillStruct() function。 這個 function 中的循環只會執行一次,而不是 N 次。 您永遠不會超過 k=0,因此您為array[0]設置num成員,然后返回array[0]

當您返回主 function 時,您可以准確地打印array[0]的位置,但數組中的后續站點編號只是隨機的未初始化值。

相反,您希望 return 語句位於循環塊之外,因此 function 應該像...

site fillStruct(site array[], int size) {
    int k; 

    for (k = 0; k < size; k++) {;
        array[k].num = k;
    }

    return array[k-1]; // Returns the last site in the array
}

現在,當您返回主 function 時,您將有 20 個站點,編號為 0 到 19(N=20)。

另請注意,在您提供的代碼中,您沒有使用fillStruct()的返回值。

希望對您有所幫助,如果我錯過了什么,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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