我有以下结构,在它下面,调用一个打印每个成员年龄的函数。
struct details num[] = {
//number //name /age /sex
{&num[0], "Jack", 18, male}
{&num[1], "Jill", 23, female}
{&num[2], "John", 43, male}
{&num[3], "Kate", 34, female}
}
print_age(&num[0]);
包含该功能的另一个c文件:
void print_age(struct details *d){
I need this function to traverse through the 'details' struct and print out the ages of
all members, i.e. 18,23,43,34
如何使用print_age函数实现上述功能?
答案 0 :(得分:1)
假设结构定义如下:
struct details {
char name[10];
int age;
char sex;
};
要打印年龄,您只需打印字段age
即可。
使用您问题中的定义:
void print_age(struct details *d)
实现可以这样写:
void print_age(struct details *d){
printf("%d\n", d->age);
}
要打印所有年龄段,您只需要为每个结构调用此函数。
for(i=0; i<4; i++)
print_age(num+i);
如果你需要函数来接收整个数组并遍历它,你需要传递数组成员的数量,让print_age()
知道有多少。
您应该考虑将打印功能更改为以下内容:
void print_age(struct details *d, int nmem){
int i;
for(i=0; i<nmem; i++)
printf("%d\n", d->age);
}