重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、结构体数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样。就和普通指针一样使用,只不过它是结构体数组。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的韶山网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
2、例程:
typedef struct Student
{
char name[10] ;
int age ;
}Student;
#define LEN 10
//print all Student infomation
void fun(Student *pStu,int len)
{
int i ;
for(i = 0 ;i len ;++i)
{
printf("%s\t%d",pStu[i].name,pStu[i].age) ;
}
}
int main ()
{
Student stu[LEN] ;
fun(stu,LEN) ;
}
j假如函数形式如下
void fun(struct example t)
{
}
可以在main函数中调用fun(eg[1]);
1、如果在函数外定义的结构数组,又要在一个函数中进行输入、输出,通常情况下,其参数传递类型需要传址,即
void shuchu(struct std **cansu);
void shuchu(struct std *cansu[]);
这样调用改为 shuchu(aa);
对函数内的相应操作改为指针操作即可。
2、通常情况下,对于一个系统设计而言,其输入输出是分开的,也即在2个函数中,从系统分析而言,建议分开。当然,就测试而言,是可以的。
3、如果一定要采用2维数组做参数,按照对于多维数组做参数的要求,前几维一定要给出确切的数值
如2维: void shuchu(struct std cansu[5][]) 就可以了。
函数定义和声明的参数应该是: int oid_check(struct snmp_seq sp, struct rmc1207 * ramp, int BUFFER_SIZE);
函数调用: flag=oid_check(sp, ramp, BUFFER_SIZE);
-------------------------------------------------------------------------------
在这里, ramp 是结构体数组的指针