学点 C 语言(40): 函数 - 多参函数

学点 C 语言(40): 函数 - 多参函数

学点 C 语言(40): 函数 - 多参函数像 printf 这种多参函数, 是借用 stdarg.h 中的宏实现的.va_list : 用于定义遍历参数列表的指针;va_start : 让指针指向第一个参数;va_arg : 获取下一个参数, 并向后移动一个位置;va_end : 释放指针, 完成遍历.整数求和:本例实现了对系列整数求和, 要求至少要有三个参数, 并且最后一个必须是 0.最后的 0 用于识别列表结束.include <stdio.h>include <stdarg.h>int sum(int n1, int n2, ...){/* 定义...

C/C++ 2020-03-05 AM 2600℃ 0条
学点 C 语言(39): 函数 - 使用函数的代价与内联函数(inline)

学点 C 语言(39): 函数 - 使用函数的代价与内联函数(inline)

学点 C 语言(39): 函数 - 使用函数的代价与内联函数(inline)C 语言离不开函数, 使用函数也很方便, 但使用函数是有代价的;特别是在反复调用时, 函数会因反复地压栈、出栈而浪费一些时间.下面是测试, 用函数与不用函数的时间分别是: 8秒、4秒!测试使用函数的代价:include <stdio.h>include <time.h>int sum(int x) {return x + x;}int main(void){int count = 1000000000; int i; int num; time_t start, stop; time(...

C/C++ 2020-03-05 AM 2308℃ 0条
学点 C 语言(38): 函数 - 函数指针

学点 C 语言(38): 函数 - 函数指针

学点 C 语言(38): 函数 - 函数指针先复习函数的定义与函数的声明://这是一个求和函数的定义:int add(int x, int y){return(x + y);}//可以这样声明:int add(int x, int y);//也可以这样声明:int add(int, int);定义一个函数指针声明一个函数差不多, 用 (* ) 包括函数即可://像这样:int (*pfun)(int, int);//或这样:int (*pfun)(int x, int y);//也可以:typedef int (*pfun)(int, int);//这就声明了一个叫 pfun 的函数指针...

C/C++ 2020-03-05 AM 2431℃ 0条
学点 C 语言(37): 函数 - 常量(const)参数

学点 C 语言(37): 函数 - 常量(const)参数

学点 C 语言(37): 函数 - 常量(const)参数非指针参数(也就是传值参数)不会被修改原始值, const 对它是没有意义的.const 只用于指针.第一种用法: const 类型 *变量:这种用法将限制修改指针指向的值.include <stdio.h>int fun(const int *p) {*p += 1; /* 只有去掉 const 这句才可以执行 */ return *p;}int main(void){int num = 3; printf("%d\n", fun(&num)); getchar(); return ...

C/C++ 2020-03-05 AM 2605℃ 0条
学点 C 语言(36): 函数 - 数组参数

学点 C 语言(36): 函数 - 数组参数

学点 C 语言(36): 函数 - 数组参数数组参数属于指针参数.指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.如果把数组当作参数, 不管你愿意与否, 它就是指针, 指向第一个值的指针.数组参数就是指向第一个元素的指针:include <stdio.h>void getArr(int p[], int si);int main(void){int ns[] = {1,2,3,4,5}; getArr(ns, sizeof(ns)/sizeof(ns[0])); getchar(); return 0;}void getArr(int...

C/C++ 2020-03-05 AM 2365℃ 0条
学点 C 语言(35): 函数 - 递归

学点 C 语言(35): 函数 - 递归

学点 C 语言(35): 函数 - 递归递归就是: 函数自己调用自己这是一个最简单的递归, 不过它会一直执行, 可用 Ctrl+C 终止.include <stdio.h>void prn(void) {printf("C++Builder 2009\n"); prn(); /* 自调用; 注意它会一直执行, 可用 Ctrl+C 终止执行 */}int main(void){prn(); getchar(); return 0;}使用递归一定要有跳出的条件:include <stdio.h>void prn(int num) {printf(...

公告 2020-03-05 AM 3601℃ 0条
学点 C 语言(34): 函数 - 关于变量(auto、static、register、extern、volatile、restrict)

学点 C 语言(34): 函数 - 关于变量(auto、static、register、extern、volatile、restrict)

学点 C 语言(34): 函数 - 关于变量(auto、static、register、extern、volatile、restrict)局部变量:局部变量也叫自动变量, 它声明在函数开始, 生存于栈, 它的生命随着函数返回而结束.include <stdio.h>int main(void){auto int i = 9; /* 声明局部变量的关键字是 auto; 因可以省略, 几乎没人使用 */ printf("%d\n", i); getchar(); return 0;}全局变量:全局变量声明在函数体外, 一般应在函数前; 每个函数都可...

C/C++ 2020-03-05 AM 2563℃ 0条
学点 C 语言(33): 函数 - 传值与传址、形参与实参

学点 C 语言(33): 函数 - 传值与传址、形参与实参

学点 C 语言(33): 函数 - 传值与传址、形参与实参传值参数(非指针参数):include <stdio.h>int inc(int x);int main(void){int num = 1; printf("%d\n", inc(num)); /* 2 */ printf("%d\n", num); /* 1; num 并没有改变, 用作函数参数时只是复制过去 */ getchar(); return 0;}int inc(int x) {x++; return x;}传址: 参数是指针、参数是地址inc...

C/C++ 2020-03-05 AM 2514℃ 0条
学点 C 语言(33): 函数 - 传值与传址、形参与实参

学点 C 语言(33): 函数 - 传值与传址、形参与实参

学点 C 语言(33): 函数 - 传值与传址、形参与实参传值参数(非指针参数):include <stdio.h>int inc(int x);int main(void){int num = 1; printf("%d\n", inc(num)); /* 2 */ printf("%d\n", num); /* 1; num 并没有改变, 用作函数参数时只是复制过去 */ getchar(); return 0;}int inc(int x) {x++; return x;}传址: 参数是指针、参数是地址inc...

C/C++ 2020-03-05 AM 2333℃ 0条
学点 C 语言(31): 函数 - 声明、定义、调用

学点 C 语言(31): 函数 - 声明、定义、调用

学点 C 语言(31): 函数 - 声明、定义、调用如果函数没有声明, 应该在调用前定义:include <stdio.h>/ 定义求大值函数 /int MAX(int x, int y) {if (x > y) return x; else return y;} / 定义求小值函数 /int MIN(int x, int y) {return x < y ? x : y;} int main(void){int a = 5; int b = 6; /* 调用函数 */ printf("%d\n", MAX(a,b)); pr...

C/C++ 2020-03-05 AM 2350℃ 0条
学点 C 语言(30): 数据类型 - 布尔类型

学点 C 语言(30): 数据类型 - 布尔类型

学点 C 语言(30): 数据类型 - 布尔类型:include <stdio.h>//等待填充...https://www.cnblogs.com/del/archive/2008/12/02/1345426.html

C/C++ 2020-03-05 AM 2526℃ 0条