c语言中所调用的函数实参和形参类型不一致该怎么办?是以谁为准,还是直接编译报错?编译器在编译时默认会做类型检查C语言函数参数类型不确定,发现行参与实参类型不一致时会提示编译警告C语言函数参数类型不确定,如果确认赋值调用不存在赋值不兼容C语言函数参数类型不确定,且不会发生溢值现象,可以使用强制类型转换,跳开编译警告 。此外,可以也在编译选项中取消类型检查 。
C语言 参数的个数是确定的 , 但是参数的类型不太确定,请问怎么实现呀?很急,在线等....应该可以的,是对a/b两个指针作为起始指针的链表来排序是吧?先分析一下:
1,a , b是两种类别的结构体指针;
2,num,name 是不同结构体里面的不同类型的成员名称;
3,因为成员类型不同,所以排序的策略肯定也不同,比方 num 是数字,name 是字符串,需要使用不同的策略来排序,如数字的大小/字符串的大小等等;
所以可以这么考虑来设计排序函数的构造:
a,需要传入一个指针 , 可以用 void *,来指向不同的结构体构成的链表;
b,传入要排序的字段在该结构体中的偏移植 offset ,注意结构体的对齐方式和具体的处理器架构和操作系统有关系,尽量使用可移植的方法;
c , 用函数指针的形式传入所需要的比较策略,比方数字大小比较函数,字符串大小比较函数之类的 。
这样实现可以适针对任意结构体中任意类型的字段,按照任意的比较策略来实现排序 。你可以在这个排序函数中使用不同的排序算法,如插入排序/冒泡排序/归并排序之类的 。
这个问题很有意思 , :) 我们会介绍给我们的同学 。欢迎你到 JulianTec 的邮件列表中讨论这样的问题 。
C语言怎么实现函数不定参数C语言中定义了va_list, va_start( ), va_arg( ), va_end( ) 这样一组宏来处理可变参数问题 。
可以参考printf的声明,创建自己的实现函数 。示例:
#includestdio.h
#includestdarg.h
void va_fun(int start,...)
{
va_list arg_ptr;
int nArgValue = https://www.04ip.com/post/start;
int nArgCount = 1;
va_start(arg_ptr,start);
while(nArgValue != -1)
{
printf("arg %d is:%d/n",nArgCount,nArgValue);
nArgValue=https://www.04ip.com/post/va_arg(arg_ptr,int);
nArgCount;
}
return;
}
main()
{
va_fun(5,1,7,-1);
printf("................/n");
va_fun(2,4,-1);
printf("................/n");
va_fun(-1);
【C语言函数参数类型不确定 c 函数参数不确定】 printf("................/n");
//va_fun(); 可变参数函数最少要有一个参数 。
}
请问c语言编写函数时不确定 参数数量时该怎么办在函数定义的时候就必须写形参名了 。声明的时候不需要,因为编译器还用不到 , 只要知道相应位置是个啥类型的就行了
关于C语言函数参数类型不确定和c函数参数不确定的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 手机应用双开怎么登录游戏,如何用手机双开游戏
- js将字符串转为数组eval,js将字符串转化为数组
- 手机版word怎么打字,手机版word如何打字
- PHP查询7天数据补零 php查询数据库数据
- macredis启动conf,centos redis 启动
- gis图层数据添加不了,gis图层数据添加不了怎么回事
- 移动光纤手机怎么设置无线路由器,用的移动的光纤怎么设置无线路由器
- mysql怎么建立学生表 用mysql语句创建学生表
- sqlserver批量执行sql,sqlserver批量执行sql语句