将结构中的数组作为参数传递给函数

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]);
    }
}

我正在尝试 运行 此代码声明一个结构,将值输入其中并尝试将结构内的数组传递给函数。但是,这样做时出现以下错误:

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

如何将这个结构数组传递给函数?

一样声明函数
void array_function( const candidate arr[], size_t n );

并像

一样打电话
print_array_function( candidates, 3 );

函数可以这样定义

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 会是一个更好的名称) .也许做你想做的最好的方法是创建一个函数 print_candidate_array_vote as :

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]);
   }
}