20150408函数
来源:互联网 发布:医药大数据应用 编辑:程序博客网 时间:2024/05/22 03:08
一.函数意义以及ccpp编辑器调用的差别
1.c语言。没有函数声明,有库可以调用,没有函数声明有函数实体可以调用
c++语言,没有函数声明,有库不可以调用,没有函数声明有函数实体在后,也不可以调用
二.函数调用以及函数基本概念
1.每一个应用程序都有函数表,每个表格存储函数地址,改变地址可以改变函数的行为
六.函数参数运算顺序
1.函数参数从右往左计算
七.可变参数的实现
1.标准参数头文件:<stdarg.h>
int add(int num, ...){} //这里的三个点代表可变参数
示例:
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <stdarg.h>//标准参数int add(int num,...)//...代表可变参数{int res = 0;//结果va_list argp;//存储参数开始的地址va_start(argp, num);//从首地址开始,读取num后面的数据for (int i = 0; i < num;i++){res += va_arg(argp, int);//读取一个数据按照int解析}va_end(argp);//结束读取return res;}void main1(){printf("%d", add(3, 1, 2, 3));printf("\n%d", add(4, 1, 2, 3,4));printf("\n%d", add(5, 1, 2, 3, 4,5));getchar();}void main2(){//printf("%d,%d,%d", 1, 2, 3);printf("%d,%s,%c,%d", 1, "123", 'A',4);getchar();}void go(int num, ...){va_list argp;//存储参数开始的地址va_start(argp, num);//从首地址开始,读取num后面的数据for (int i = 0; i < num; i++){//char str[50];//sprintf(str, "%s", va_arg(argp, char *));//system(str);system(va_arg(argp, char *));//读取一个数据按照char *解析}va_end(argp);//结束读取}void main3(){go(3, "notepad", "calc", "tasklist &pause");getchar();}void showint(int start,...){va_list argp;//存储参数开始的地址va_start(argp, start);//从首地址开始,读取num后面的数据int argvalue = start;//第一步初始化do {printf("\n%d", argvalue);argvalue =va_arg(argp, int);//不断读取} while (argvalue != -1);va_end(argp);//结束读取}void main(){//showint(1, 2, 3, 4, -1);showint(1, 2, 3, 4,5, -1);getchar();}
八.函数声明定义全局变量声明定义
1.全局变量没有初始化默认为0
2.全局变量可以有多个声明,但只可以有一个定义,局部变量没有声明和定义的区别
(变量不赋值即为声明)
3.全局变量可以跨文件调用
4.内部快语句变量会屏蔽同名外部变量
0 0
- 20150408函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- SartUml画图
- [疯狂Java]集合:Queue、PriorityQueue
- react native中需要rnpm link的组件
- fastjson过滤属性,重点在于PropertyFilter 这个东西(应用场景,hibernate懒加载过滤不要的属性)
- sublime字体设置
- 20150408函数
- android 桌面组件 App widget的使用
- 关于C++的类的几点注意点
- IOS- 开发证书与发布证书申请和安装步骤
- jquery购物车数量加减
- VC 修改窗口属性
- linux rsync介绍(八)
- sybase 备份命令
- JavaScript 变量声明提升