c语言里的多参数吗,C语言中不定参数的实现
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
但是请注意,由於 K&R C 中并不检查参数型态,so 在此是用 ANSI
C 来说明,毕竟 ANSI C 是目前所有 C Compiler 都支援的标准;常在
网路上看到有人推荐 K&R The C Programming Language 这本书,老
实说这本是不错(我以前也是看这本),但因为 K&R C 慢慢因为 ANSI
C 的完整标准出现,而面临考验,所以我建议若是初学者先从 ANSI C
看起,等对 ANSI C 的标准了解後,再回头看这本(其实不看也没差,虽
然它号称 C 语言圣经,但时代在变,有些东东开始不适用。不过还是有
看的价值)
//
// 固定的参数一定要放前面!!
int FUNC(int xx,...)
{
int tmp;
va_list arg_ptr; // 用va_list声明指向引数列表的 Pointer
va_start(arg_ptr,xx); // 从引数表中取得第一个引数
// 第一个引数就是 xx 自己(xx是最后一个固定变量)
tmp=va_arg(arg_ptr,int); // 从引数表中取得int 型态引数
// 一直呼叫 va_arg 即可取得所
// 有引数(第二个参数int是当前不定变量的类型 )
va_end(arg_ptr); // 取完後将 arg_ptr = NULL
// 以便归还 stack 空间(要在所有的不定变量引用完之后再用va_end(),否则会有无法预测的结果。)
}
理论上不定参数是可以无限多的,但碍於 memory 及 stack 大小
所以项数通常有上限,如 Turbo C 最多 200 个,一超过就出现如下
" Fatal stack overflow error-System halted ",然後当掉,你连
暖开机都不行;所以当你使用一套 Compiler 时一定要有其参考手册
或资料,以免搞半天除错後,还找不出原因!!
(P.S. 像 Turbo C 2.0 只能用 4000 个 if ,....太多要注意的!!)
说了一堆,不知道你会用了没?! 最後用一个画多边型的函数做□
例,顺便做结束。
/* EX */
#include // 记得要 include 才能用
#define END_P -400 // 用来判断是否为最後一个参数
void DrawPoly(int color,...)
{
va_list arg_ptr;
int x[200],y[200]; // 最多 200 个点
int p_c=0; // 计算有几点
int i; // 计数器
va_list(arg_ptr,color);
while(((x[p_c]=va_arg(arg_ptr,int))>END_P) \
&&((y[p_c]=va_arg(arg_ptr,int))>END_P)\
&& p_c<=200) // 不是最後一点且小於 200 个点
p_c++;
if(p_c<3) return ; // 不到 3 点不成一多边型,So 跳出
for(i=0;i
// 划线,每个 Compiler 不同,自行修改
line(x[i],y[i],x[i+1],y[i+1],color);
// 最後一条线
line(x[0],y[0],x[p_c-1],y[p_c-1],color);
va_end(arg_ptr);
}
c语言里的多参数吗,C语言中不定参数的实现相关推荐
- c语言如何实现不定参数,C语言中不定参数的实现
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 但是请注意,由於 K&R C 中并不检查参数型态,so 在此是用 ANSI C 来说明,毕竟 ANSI C 是目前所有 C Compiler 都支 ...
- C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...
- c语言不定参数个数,C语言中不定参数的实现
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 但是请注意,由於 K&R C 中并不检查参数型态,so 在此是用 ANSI C 来说明,毕竟 ANSI C 是目前所有 C Compiler 都支 ...
- C语言如何处理不定长度参数,C语言中不定参数的实现
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 但是请注意,由於 K&R C 中并不检查参数型态,so 在此是用 ANSI C 来说明,毕竟 ANSI C 是目前所有 C Compiler 都支 ...
- c语言不定参数的使用,C语言中不定参数的实现
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 但是请注意,由於 K&R C 中并不检查参数型态,so 在此是用 ANSI C 来说明,毕竟 ANSI C 是目前所有 C Compiler 都支 ...
- c语言里 t是什么作用,c语言里的\t是什么意思
c语言里的\t是什么意思以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言里的\t是什么意思 正宗叫法是" ...
- java中重载 参数顺序_Java方法中的参数太多,第4部分:重载
java中重载 参数顺序 期望将过多的参数传递给Java方法的问题之一是,该方法的客户端很难确定它们是否以适当的顺序传递了适当的值. 在以前的文章中,我描述了如何使用自定义类型 , 参数对象和构建器来 ...
- java自定义方法参数注解_Java方法中的参数太多,第1部分:自定义类型
java自定义方法参数注解 我认为构造函数和方法中冗长的参数列表是Java开发中的另一个" 危险信号 ",就逻辑和功能而言,它们不一定是"错误的",但通常暗示当 ...
- java 可变参数方法_Java方法中的参数太多,第7部分:可变状态
java 可变参数方法 在我的系列文章的第七篇中,有关解决Java方法或构造函数中过多参数的问题 ,我着眼于使用状态来减少传递参数的需要. 我等到本系列的第七篇文章来解决这个问题的原因之一是,它是我最 ...
最新文章
- a标签代替input[button]
- BZOJ4653 洛谷1712 UOJ222:[NOI2016]区间——题解
- ajax post提交数据_详解Ajax异步加载
- 如何在Twitter上阻止令人讨厌的“今日热门新闻@yourname”垃圾邮件
- Netbackup detected IBM drives as unusable
- python创建socket对象_python---一个简单的socket
- python60行绘图程序_不敢相信,60行python代码就写出了贪吃蛇游戏
- STM8S——Analog/digital converter (ADC)
- linux系统32位镜像下载,深度Linux Deepin镜像下载
- 编程十年 (13):毁人不倦1
- 下关便装特沱微刻辩识
- ansys 服务器无响应,ansys链接不到本地服务器
- android 自动加微信群,如何完美实现微信自动发朋友圈自动添加好友等等
- ios:应用发布App Store流程
- hx1838 红外遥控(1):接收时序的解码
- 机器学习_4.隐马尔可夫模型初识
- 用python绘制heatmap
- Springboot后台HTML/富文本转图片
- c语言中向计算机输入一个字符的函数是,计算机c语言输入输出函数格式详解.docx...
- C语言输出九九乘法表(倒三角形输出)。
热门文章
- html float作用,CSS float相关详解
- a按钮居中显示 bootstrap_Excel合并后居中,跨越合并,及跨列居中的区别你都知道吗...
- windows共享linux的某一文件夹
- Linux 服务器更换主板后,网卡识别失败的处理方法
- 简单使用DESeq2/EdgeR做差异分析
- EggNOG功能注释数据库在线和本地使用
- R语言ggplot2可视化散点图、移除可视化图像中的网格线(remove gridlines)
- R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化PCA所有的主成分绘制散点图矩阵、降维后的两个(三个)核心主成分的二维、三维可视化图形、方差解释的量、载荷图等
- R语言dplyr包mutate_if函数修改所有满足条件的数据列的内容实战
- python分数运算使用Fraction模块