函数:
函数是完成将某个功能或者指令的封装
将相同的代码块重复利用。
结构:
返回值类型 函数名(输入的参数)
{
有返回值的,需要写 return XX; 返回XX
}
如: 整数求和函数
int sum(int a,int b)
{
int c = a + b; //代码实现 也可以直接return a + b;
return c;
}
函数的语法
1.) 函数返回值类型不是函数的类型
2.) 函数只能返回一个值
return a,b; //REEOR
3.) 函数名,应该见名知意
4.) 函数的参数可以有多个也可以没有
5.) return 在函数内部使用,表示函数结束,返回
6.)void在函数中的用法:
作为返回值类型:表示没有返回值
作为参数:表示没有参数
7.) 每个函数都有自己的值,没有return 的同样执行会有值,只是值是不确定的
函数的调用
1、把实参的值赋值给相对应形参
2、跳转到指定的函数中去执行
直到遇到了return, 或者 函数语句执行完了
return 后面的表达式的值,就是作为整个
函数调用表达式的值。
语法:函数名(参数);
有返回值的可以定义一个变量用于接收值
函数传入参数是形参,参数本事是实参,传入到函数内的是形参,相当于一个新的变量
需要注意的是
void change(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
int a=5,b=6;
change(a,b);
调用此函数是无法实现值的交换,
(后面学习到的传入地址,修改地址所指向的值是可以实现交换的,但交换地址,无法实现)
函数声明
在函数调用前需要声明函数,告诉编译器这个名字(标识符)
写上函数头即可,
int sum(int a , int b); 也可以省略形参 int sum(int , int);
数组作为函数形参
一维数组
传入是需要带上自己的数组大小
ru : xxx(int b[ ],int n); b 为函数名,n为函数元素个数
调用:xxx(a,10);
二维数组
int a[3][4]; =>int [4] a[3];
数据元素类型:int [4]
数组名a [ ]
数组元素个数: 3
传入是需要带上个数
xxx(int a[] [4],int n);
灵活运用二进制
写一个函数,求一个整数的二进制形式中有多少个1 ?
int bit_count(unsinged int x)
{
int bits = sizeof(x) * 8; //一个字节 8 个bit
int i;
int count = 0;
for(i = 0; i < bits; i++)
{
if(x & (1 << i))
{
count ++;
}
}
return count;
}