簡體   English   中英

將結構中的數組作為參數傳遞給 function

[英]Passing an array from a struct as an argument to a function

#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct
{
    int votes;
}
candidate;

void array_function(int arr[]);

int main(void)
{
    candidate candidates[3];
    candidates[0].votes = 5;
    candidates[1].votes = 3;
    candidates[2].votes= 1;
    print_array_function(candidates.votes);
}

void print_array_function(int arr[])
{
    for (int i = 0; i < 3; i++)
    {
        printf("%i\n", arr[i]);
    }
}

我正在嘗試運行此代碼,該代碼聲明一個結構,將值輸入其中並嘗試將結構內的數組傳遞給 function。 但是,這樣做我收到以下錯誤:

test.c:22:30: error: member reference base type 'candidate [3]' is not a structure or union
    array_function(candidates.votes);

如何將此結構數組傳遞到 function?

只需像這樣聲明 function

void array_function( const candidate arr[], size_t n );

並打電話給

print_array_function( candidates, 3 );

function 可以通過以下方式定義

void array_function( const candidate arr[], size_t n )
{
    for ( size_t i = 0; i < n; i++ )
    {
        printf( "%i\n", arr[i].votes );
    }
}

在這里,您有一個結構candidate數組,其中每個元素都包含一個名為votesint (當然, vote是一個更好的名稱)。 也許做你想做的最好的方法是創建一個 function print_candidate_array_vote為:

void print_candidate_array_vote(candidate *candidates, unsigned int n_candidates)
{
    for (int i = 0; i < n_candidates; i++) {
        printf("%d\n", candidates[i].votes);
    }
}

試試下面的代碼,做了一些改變

 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>

 typedef struct candidate
 {
 int votes;
 }
candidate;

void array_function(int arr[]);

int main(void)
{
    candidate candidates[3];
    candidates[0].votes = 5;
    candidates[1].votes = 3;
    candidates[2].votes= 1;
    print_array_function(candidates);
}

void print_array_function(candidate arr[])
{
   for (int i = 0; i < 3; i++)
   {
       printf("%i\n", arr[i]);
   }
}

暫無
暫無

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

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