摘要: 像 printf 这种多参函数, 是借用 stdarg.h 中的宏实现的. va_list : 用于定义遍历参数列表的指针; va_start : 让指针指向第一个参数; va_arg : 获取下一个参数, 并向后移动一个位置; va_end : 释放指针, 完成遍历. 1. 整数求和: 本例实现了对系列整数求和, 要求至少要有三个参数, 并且最后一个必须是 0. 最后的 0 ... 阅读全文
posted @ 2008-12-04 22:20 万一 阅读(2378) 评论(0) 推荐(0) 编辑
摘要: C 语言离不开函数, 使用函数也很方便, 但使用函数是有代价的; 特别是在反复调用时, 函数会因反复地压栈、出栈而浪费一些时间. 下面是测试, 用函数与不用函数的时间分别是: 8秒、4秒! 1. 测试使用函数的代价: #include #include int sum(int x) { return x + x; } int main(void) { int cou... 阅读全文
posted @ 2008-12-04 21:16 万一 阅读(2077) 评论(3) 推荐(0) 编辑
摘要: 先复习函数的定义与函数的声明: //这是一个求和函数的定义: int add(int x, int y) { return(x + y); } //可以这样声明: int add(int x, int y); //也可以这样声明: int add(int, int); 定义一个函数指针声明一个函数差不多, 用 (* ) 包括函数即可: //像这样: int (*pfun)(... 阅读全文
posted @ 2008-12-04 19:04 万一 阅读(2555) 评论(1) 推荐(0) 编辑
摘要: 非指针参数(也就是传值参数)不会被修改原始值, const 对它是没有意义的. const 只用于指针. 1. 第一种用法: const 类型 *变量: 这种用法将限制修改指针指向的值. #include int fun(const int *p) { *p += 1; /* 只有去掉 const 这句才可以执行 */ return *p; } int main... 阅读全文
posted @ 2008-12-04 17:11 万一 阅读(3008) 评论(3) 推荐(0) 编辑
摘要: 数组参数属于指针参数. 指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径. 如果把数组当作参数, 不管你愿意与否, 它就是指针, 指向第一个值的指针. 1. 数组参数就是指向第一个元素的指针: #include void getArr(int p[], int si); int main(void) { int ns[] = {1,2,3... 阅读全文
posted @ 2008-12-04 15:47 万一 阅读(5705) 评论(1) 推荐(1) 编辑
摘要: 1. 递归就是: 函数自己调用自己 这是一个最简单的递归, 不过它会一直执行, 可用 Ctrl+C 终止. #include void prn(void) { printf("C++Builder 2009\n"); prn(); /* 自调用; 注意它会一直执行, 可用 Ctrl+C 终止执行 */ } int main(void) { prn(); ... 阅读全文
posted @ 2008-12-04 13:18 万一 阅读(3887) 评论(1) 推荐(1) 编辑
摘要: 1. 局部变量: 局部变量也叫自动变量, 它声明在函数开始, 生存于栈, 它的生命随着函数返回而结束. #include int main(void) { auto int i = 9; /* 声明局部变量的关键字是 auto; 因可以省略, 几乎没人使用 */ printf("%d\n", i); getchar(); return 0; } ... 阅读全文
posted @ 2008-12-04 10:22 万一 阅读(3799) 评论(1) 推荐(1) 编辑