免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2127 | 回复: 8
打印 上一主题 下一主题

[函数] 调用函数的实参错误??请帮忙看看,谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-12 15:54 |只看该作者 |倒序浏览
调用函数的实参错误, 请帮忙看看,谢谢

函数原型
void  condition_list( TDataSet  in_list[],
AnsiString name_list[],int  DataSetCount)


调用方式1
String Tablename[2];
Tablename[0]="a";
Tablename[1]="b";
TDataSet *TableArrage[2];
TableArrage[0]=ADOQuery1;
TableArrage[1]=ADOQuery2;
condition_list(*TableArrage,Tablename,2);
编译通过,但原型参数 in_list[1],传递不过来,只传递了in_list[0] 也就是ADOQuery1, 不知道错在哪里??

调用方式2
String Tablename[2];
Tablename[0]="a";
Tablename[1]="b";
condition_list((ADOQuery1,ADOQuery2),Tablename,2);
编译通过,运行时出错, in_list[1]的值也没传递过来 ???


急,请各位帮忙看看, 我这两种调用错在哪里?    谢谢!

论坛徽章:
0
2 [报告]
发表于 2004-07-12 19:13 |只看该作者

调用函数的实参错误??请帮忙看看,谢谢

调用方式1:
函数原型接受的是TDataSet类型的数组。而调用时传递的参数为*TableArrage,TableArrage是一个指针数组,数组名实际上就是数组第一个元素的地址,传递*TableArrage实际上等于是传递第一个数组元素(此时是指向TDataSet类型的指针)所指向的ADOQuery1,而不是在传递整个数组。

函数参数在传递是要保证类型一致,ADOQuery1是什么类型?最好说出来,不然不好分析问题。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-07-12 19:43 |只看该作者

调用函数的实参错误??请帮忙看看,谢谢

你怎么知道只传递了in_list[0]?

论坛徽章:
0
4 [报告]
发表于 2004-07-13 18:02 |只看该作者

调用函数的实参错误??请帮忙看看,谢谢

原帖由 "kj501" 发表:
调用方式1:
函数原型接受的是TDataSet类型的数组。而调用时传递的参数为*TableArrage,TableArrage是一个指针数组,数组名实际上就是数组第一个元素的地址,传递*TableArrage实际上等于是传递第一个数组元素(此时是..........


是否我对应的原型函数的, in_list也指向同一个地址 TableArrage所指向的地址,是否in_list[1]就应该是TableArrage[1]所指向的地址? 那我是否可以用
in_list[1]来访问TableArrage[1]所指向数组的值?  谢谢
另,ADOQuery1是TDataSet类的子类的一个实例

论坛徽章:
0
5 [报告]
发表于 2004-07-13 18:04 |只看该作者

调用函数的实参错误??请帮忙看看,谢谢

[quote]原帖由 "lenovo"][/quote 发表:



lenovo 老大, 我是trace 时候看到的,in_list[1]没有任何东西. 请帮忙看一下我错在哪里 ? 谢谢!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-07-13 18:25 |只看该作者

调用函数的实参错误??请帮忙看看,谢谢

》》condition_list(*TableArrage,Tablename,2);
这句,你只把TableArrage数组中的第一个元素传递
进来了,并不是数组的地址,你好好想一想是不是这样。
你最好修改一下你的函数原型,看的我很难受。

论坛徽章:
0
7 [报告]
发表于 2004-07-13 19:03 |只看该作者

调用函数的实参错误??请帮忙看看,谢谢

我觉得楼主的思路上好象不太清晰。
如果要传递一个指针数组,为什么不能把函数原形中的TDataSet in_list[]直接声明成TDataSet *in_list[],然后用condition_list(TableArrage,Tablename,2)就可以把TableArrage这个数组给传递过去了。

论坛徽章:
0
8 [报告]
发表于 2004-07-14 10:19 |只看该作者

调用函数的实参错误??请帮忙看看,谢谢

谢谢,两位老大

论坛徽章:
0
9 [报告]
发表于 2004-07-14 10:26 |只看该作者

调用函数的实参错误??请帮忙看看,谢谢

同意kj501的说法。
在函数原型的定义中,数组形参最好改为指针,因为实参的数组传递给函数时实际上传递的是数组第一个元素的地址。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP