
- “函数” 可以将实现了某一功能,并需要反复使用的代码包装起来形成一个功能模块(即写成一个“函数”),那么当程序中需要使用该项功能时,只需写一条语句,调用实现该功能的 “函数”即可。
- 不同的程序员可以分别写不同的函数,拼起来形成一个大程序。
返回值类型 函数名(参数1类型 参数1名称, 参数2类型 参数2名称……)
{
语句组(即“函数体”)
}
- 如果函数不需要返回值,则返回值类型可以写
void
调用函数:
函数名(参数1,参数2,……)
-
对函数的调用,也是一个表达式。函数调用表达式的值,由函数内部的return语句决定。return语句语法如下:
return 返回值; -
return语句的功能是结束函数的执行,并将“返回值”作为结果返回。“返回值”是常量、变量或复杂的表达式均可。如果函数返回值类型为“void”,return语句就直接写:
return ;
- return 语句作为函数的出口,可以在函数中多次出现。多个return语句的“返回值”可以不同。在哪个return语句结束函数的执行,函数的返回值就和哪个return语句里面的“返回值”相等。
- 一般来说函数的定义必须出现在函数调用语句之前,否则调用语句编译出错。
- 函数的调用语句前面有函数的声明即可,不一定要有定义!
返回值类型 函数名(参数1类型 参数1名称, 参数2类型 参数2名称……);
//参数名称可以省略。函数声明也称为“函数的原型”
- C/C++程序从main函数开始执行,执行到main中的return则结束。
- 一般来说函数的形参是实参的一个拷贝,且形参的改变不会影响到实参,除非类型是数组,引用。
- 一维数组作为形参时的写法如下:
类型名 数组名[ ]
不用写出数组的元素个数。 - 数组作为函数参数时,是传引用的,即形参数组改变了,实参数组也会改变。
-
二维数组作为形参时,必须写明数组有多少列,不用写明有多少行:
void PrintArray( int a[][5]) { cout << a[4][3]; } -
必须要写明列数,编译器才能根据下标算出元素的地址。
a[i][j]的地址:数组首地址+i×N×sizeof(a[0[0])+j×sizeof(a[0][0])(N是数组列数)形参数组的首地址就是实参数组的首地址.
- 库函数:C/C++标准规定的,编译器自带的函数
- 头文件:C++编译器提供许多“头文件”,如: iostream cmath
string 等头文件内部包含许多库函数的声明以及其他信息,如cin,cout的定义。 #include<头文件>即可将头文件包含到程序中,此后即可使用头文件中声明的库函数及其他信息。
数学函数
数学库函数声明在cmath中,主要有:
int abs(int x) 求整型数x的绝对值
double cos(double x) 求x(弧度)的余弦
double fabs(double x) 求浮点数x的绝对值
int ceil(double x) 求不小于x的最小整数
double sin(double x) 求x(弧度)的正弦
double sqrt(double x) 求x的平方根
......
字符处理函数
这些库函数在ctype中声明,主要有:
int isdigit(int c) 判断 c 是否是数字字符
int isalpha(int c) 判断 c 是否是一个字母
int isalnum(int c) 判断 c 是否是一个数字或字母
int islower(int c) 判断 c 是否是一个小写字母
int isupper(int c) 判断 c 是否是一个大写字母
int toupper(int c) 如果 c 是一个小写字母,则返回对应大写字母
int tolower (int c) 如果 c 是一个大写字母,则返回对应小写字母
3.递归
- 一个函数,自己调用自己,就是递归。
- 递归函数需要有终止条件,否则就会无穷递归导致程序无
法终止甚至崩溃。
-
用于对整数类型(int,char, long 等)变量中的某一位(bit),或者若干位进行 *** 作。
-
C/C++语言提供了六种位运算符来进行位运算 *** 作。
- 将参与运算的两 *** 作数各对应的二进制位进行与 *** 作,只有对应的两个二进位均为1时,结果的对应二进制位才为1,否则为0。
- 通常用来将某变量中的某些位清0且同时保留其他位不变。也可以用来获取某变量中的某一位。
- 将参与运算的两 *** 作数各对应的二进制位进行或 *** 作,只有对应的两个二进位都为0时,结果的对应二进制位才是0,否则为1。
- 按位或运算通常用来将某变量中的某些位置换1且保留其他位不变。
- 将参与运算的两 *** 作数各对应的二进制位进行异或 *** 作,即只有对应的两个二进位不相同时,结果的对应二进制位才是1,否则为0。
- 按位异或运算通常用来将某变量中的某些位取反,且保留其他位不变。
- 如果 a^b=c,那么就有 c^b = a以及c^a=b。
- 异或运算还能实现不通过临时变量,就能交换两个变量的值
int a = 5, b = 7;
a = a ^ b;
b = b ^ a;
a = a ^ b;
4.按位非 “~”
- 按位非运算符“~”是单目运算符。其功能是将 *** 作数中的二进制位0变成1,1变成0。
-
表达式:
a << b的值是:将a各二进位全部左移b位后得到的值。左移时,高位丢弃,低位补0。a 的值不因运算而改变。
-
实际上,左移1位,就等于是乘以2,左移n位,就等于是乘以2n 。而左移 *** 作比乘法 *** 作快得多。
- 表达式:
a >> b的值是:将a各二进位全部右移b位后得到的值。右移时,移出最右边的位就被丢弃。 a 的值不因运算而改变。 - 对于有符号数,如long,int,short,char类型变量,在右移时,符号位(即最高位)将一起移动,并且大多数C/C++编译器规定,如果原符号位为1,则右移时高位就补充1,原符号位为0,则右移时高位就补充0。
- 对于无符号数,右移时高位就补充0。
- 实际上,右移n位,就相当于左 *** 作数除以2 n ,并且将结果往小里取整。
| 位运算符 | 特点 | 作用 |
|---|---|---|
| & | 皆1为1 | 尾位清零,保前位 |
| | | 皆0为0 | 尾位换1,保前位 |
| ^ | 同0异1 | 尾位取反,保前位 |
| ~ | 0、1互换 | 全数取反 |
| << | 左移*2n | 左移高丢左补零 |
| >> | 右移/2n | 右移低丢左补0或1 |
- 只有非是单目运算符
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)