将结构中的数组作为参数传递给函数
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
,其中每个元素包含一个名为 votes
的 int
(当然 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]);
}
}
#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
,其中每个元素包含一个名为 votes
的 int
(当然 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]);
}
}