C/C++函数相关知识

来源:互联网 发布:java ip 正则表达式 编辑:程序博客网 时间:2024/05/22 03:25

CLOCKS_PER_SEC该常量表示每秒钟包含的系统时间单位数(比如比如一秒等于系统的1000个单位)

缺省形参值一般写在函数的声明中,而不是函数定义中,并且必须从右向左按顺序缺省(缺省值右边不能有非缺省值),因为默认缺省形参值从左往右依次赋值
在同一个作用域,函数的缺省值不能有多个说明;不同作用域允许设置不同的缺省形参值,缺省形参值以最近的函数为准

Cout<

#define 标识符     字符串#define alliasName typeName 

无参宏定义,行末不能加分号,如加上分号,则连分号一起置换
如果宏名alliasName用双引号括起来,则不用type Name进行替换

带参宏定义:

#define M(y)   y*y+3*y    //宏定义K=M(5);                   //宏调用

宏名和形参之间不能有空格
在带参宏定义中,形参不分配内存,因此不需要给形参定义类型。而在宏调用中要用类型说 明
字符串内的形参和字符串通常要用括号括起来,避免优先级问题
声明一系列变量时,不要用#define,而typedef不会出现这样的问题

#define a int*a x,y;//只对x有效,相当于int *xint y;Typedef int* a;a x,y;//都有效,相当于 int *x;int *y;#undef   取消宏定义

Typedef typeName alliasName;//有分号ine 内联函数(以代码膨胀作为代价,用空间换取时间)
inline 写在函数定义前面,写在一起
编译时在调用处用函数体进行替换
内联函数内不能有循环语句和switch语句
内联函数体内代码不能太长,一般不超过五行
递归函数不能定义成内联函数

函数指针:一个函数总是占用一段连续的内存区,函数名是该函数所占内存区的首地址,通过指针变量 就可以找到并调用这个函数
返回值类型(*指针变量名)(参数表)
1.先定义函数指针变量
2.用被调用函数的首地址(函数名)赋给该函数指针变量
3.函数
函数指针调用函数形式
指针变量名(实参表)

函数指针变量不能进行算术运算,与数组指针不同。
函数指针定义中两边括号不能少。

Void Output(int (*pmax)(int,int))//第二个第三个int后不跟变量名{Cout<<Pmax(a,b);}

指针函数:函数返回类型为指针的函数

指针函数指返回值为指针的函数,它是一种函数,只是返回类型区别于其他函数。而函数指针是指向函数的指针,这是一种特殊的指针,它并非指向任何变量,而是指向函数。

函数重载:功能相近的函数在1.相同的作用域内,形成函数重载
形参类型不同
Int add(int x,int y);
float add(float x,float y);

形参个数不同
Int add(int x,int y);
Int add(int x,int y,int z);
2.重载函数的形参必须不同:个数不同或类型不同
形参名和返回值类型不能区分是否是重载函数
编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用那一个函数。
不要将功能不同的函数声明为重载函数,以免出现误解,即使没错。

1.两个重载函数至少一个都带了缺省值,2.类型转换 如果编译能找到多个对应形参类型或个数的函数,会报错(二义性)

函数模板:创建一个通用功能的函数,放到全局里面来写

声明方法:template

template<typename T>T abs(T x);定义函数:T abs(T x)   {  }

枚举:将需要的变量值一一列出来,范围有限
enum 枚举类型名 {变量值列表};//注意分号
1.枚举元素按照常量处理,不能对其赋值
2.枚举元素具有缺省值,依次为0,1,2…
3.也可在声明时另行指定枚举元素的值
4.枚举元素可以进行关系运算
5.整数值不能直接赋给枚举元素,要强制转换 变量名=(枚举名)整数值;

定义枚举变量前面可以省去enum

cout.width(n); 表示输出列宽为n,只对接下来的一个cout有效。

结构体:不同数据类型组成的集合体,注意{}后有分号

变量说明: 结构体名 结构变量名;
结构变量的存储类型概念、它的寿命、可见性及使用范围与普通变量完全一致。

结构变量说明在结构类型声明之后,二者也可同时进行

结构变量占内存大小可用 sizeof 运算求出:结构体内存是连续的,以 后面成员中最大的字节长度为标准开辟单位空间。小字节以 后面相邻的大字节长度对齐(隔空格),一个单位空间能塞得下就塞下去,塞不下再开一个空间。(空类或者空的结构体占一个字节)
sizeof(结构名)
结构变量的初始化:
初始化:说明结构变量的同时可以直接设置初值。

结构体成员的引用形式:
结构变量名.成员名

一般用结构指针作为函数的形参