C语言中结构体数组名作为函数参数的问题

两个结构体如下:
struct rmc1207
{
int value;
int syntax;
int max_value;
int access;
int status;
char name[BUFFER_SIZE];
int var_oid[10];
};
struct rmc1207 ramp[BUFFER_SIZE]={//RMC1207 相位灯的控制部分
{, , , , , ,},
{, , , , , ,},
.
.
.
.
.
};

struct snmp_seq
{
int version;//版本号
int community[BUFFER_SIZE];//团体关键字
int command;//PUD类型
int reqid[BUFFER_SIZE];//请求标识
int errstat;//错误状态
int errindex;//错误索引
struct variable_list//绑定变量
{
int oid_name[BUFFER_SIZE];//OID值
int oid_len;//OID长度
int value_type;//变量值的类型
int value_len;//变量值的长度
int oid_value;//变量值的值
}val;
}sp;
下面是我编写的函数,我“如何调用上两个结构体的变量”完成如下函数?
int oid_check(?????????????????)
{
int flag=0;
int flag1=0;
int temp=0;
int i=0, j=0;
for(i=0;i<5;i++)
{
for(j=1+flag1;j<16;j++)
{
if(sp.val.oid_name[i+11]==ramp[j+0].var_oid[i+1])
{
flag=1;
temp=j;
if(sp.val.oid_name[i+10]!=ramp[temp+0].var_oid[i])
{
flag=0;
break;
}
else flag1=temp;

break;
}
flag=0;
}
if((flag==0)||(sp.val.oid_name[i+12]==0)) break;
}
return flag;
}
=============================================================
#define BUFFER_SIZE 1024
int oid_check(struct snmp_seq sp, struct rmc1207 ramp[], int BUFFER_SIZE);声明
flag=oid_check(sp, ramp, BUFFER_SIZE);调用
int oid_check(struct snmp_seq sp, struct rmc1207 ramp[], int BUFFER_SIZE)
{};函数
错误提示:
1、error: array type has incomplete element type
2、error: expected ';', ',' or ')' before numeric constant

函数定义和声明的参数应该是: int oid_check(struct snmp_seq sp, struct rmc1207 * ramp, int BUFFER_SIZE);

函数调用: flag=oid_check(sp, ramp, BUFFER_SIZE);

-------------------------------------------------------------------------------
在这里, ramp 是结构体数组的指针追问

error: expected ';', ',' or ')' before numeric constant

追答

检查一下你的程序, 应该是有基本的语法格式问题, 改正就好啦. 因为你没有贴完整的程序, 也没能帮你看.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-22

两种方法:

    函数声明:int oid(snmp_seq sp, rmc1207 ramp[], int size) 

    函数声明:int oid(snmp_swq sp, rmc1207 * ramp, int size)

两种方法实际上是一样的,数组在函数调用时会退化成指针,因此需要传入数组的大小,即int size。

调用: oid(sp, ramp, BUFFER_SIZE)即可。

 

函数声明中不能直接写BUFFER_SIZE,只能写size。

追问

我补充了错误提示,请看下

追答

函数声明中不能直接写BUFFER_SIZE,只能写size。

追问

error: expected ';', ',' or ')' before numeric constant

第2个回答  2013-07-23
函数声明:int oid(snmp_seq sp, rmc1207 ramp[], int size)
函数声明:int oid(snmp_swq sp, rmc1207 * ramp, int size)
相似回答