一、如果一个函数要处理一个结构数组,由于数组名就是该数组的地址,所以可以把他传递给函数(即数组名=结构数组中第一个结构的地值,如下面示例中的:jones = &jones[0])
Demo:
#include <stdio.h>
#include <stdlib.h>
#define FUNDLEN 50
#define N 2
struct funds
{
char bank[FUNDLEN];
double bankfund;
char save[FUNDLEN];
double savefund;
};
double sum(const struct funds money[],int n);
int main()
{
struct funds jones[N] =
{
{
"Garlic-Melon Bank",
4032.27,
"Lucky's Savings and Loan",
8543.94
},
{
"Honest Jack's Bank",
3620.88,
"Party Time Savings",
3802.91
}
};
printf("The Joneses have a total of $%.2f.\n",sum(jones,N));
return 0;
}
double sum(const struct funds money[],int n)
{
int i;
double total;
for(i = 0,total = 0; i < n; i++)
total += money[i].bankfund + money[i].savefund;
return total;
}
//Result:The Joneses have a total of $20000.00.
二、总结
1、可以把数组名作为数组中第一个结构的地址传递给函数
2、可以使用数组表示法访问数组中的其他结构。注意下面的函数调用与使用数组名效果相同
sum(&jones[0],N);
因为jones和&jones[0]相同,所以使用数组名是传递结构地址的一种间接方式。