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

两个结构体如下:structrmc1207{intvalue;intsyntax;intmax_value;intaccess;intstatus;charname[BU... 两个结构体如下:
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
展开
 我来答
大林因
推荐于2016-04-24 · TA获得超过228个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:147万
展开全部
函数定义和声明的参数应该是: 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
追答
检查一下你的程序, 应该是有基本的语法格式问题, 改正就好啦. 因为你没有贴完整的程序, 也没能帮你看.
百度网友cd8541ae4
2013-07-22 · TA获得超过264个赞
知道小有建树答主
回答量:126
采纳率:100%
帮助的人:112万
展开全部

两种方法:

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

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

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

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

 

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

更多追问追答
追问
我补充了错误提示,请看下
追答
函数声明中不能直接写BUFFER_SIZE,只能写size。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
f冰山cool
2013-07-23 · 超过10用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:33.9万
展开全部
函数声明:int oid(snmp_seq sp, rmc1207 ramp[], int size)
函数声明:int oid(snmp_swq sp, rmc1207 * ramp, int size)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式