目录
1.函数的分类:(库函数、自定义函数)
1.库函数:
工具:1.网址:cplusplus.com ;2.msdn; 3.en.cppreference.com
库函数分类:
1.IO函数;
2.字符串操作函数;
3.字符操作函数;
4.内存操作函数;
5.时间/日期函数;
6.数学函数;
7.其他函数;
2.自定义函数
int get_Max(int a,int b){
int max;
if (a>b) {
max = a;//相等时随便打印哪个都可以,可以不做考虑
}else{
max = b;
}
return max;
}
int main(){
int a = 10;
int b = 20;
int max = get_Max(a,b);
printf("较大值是:%d\n",max);
}
#include <stdio.h>
/**
a、y、a、b是在内存上开辟的四个内存空间,
因此在操作的时候仅仅操作的是xy的内存空间中的值,
与a、b自身的内存无关,因此,直接在swap方法后面打印实不可取的
*/
void swap(int x, int y){
int tmp;
tmp = x;
x = y;
y = tmp;
}
void swap1(int *pa,int *pb){
int tmp;
tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int main(){
int a = 10;
int b = 20;
printf("交换前:a = %d,b = %d\n",a,b);
// swap(a,b);//此处打印不会交换成功,原因见注释,在交换的时候需要用指针对应操作对应的内存地址
swap1(&a,&b);//通过指针的形式交换才能交换成功
printf("交换后:a = %d, b = %d\n",a,b);
return 0;
}
2.函数的参数(形参、实参)
1.函数的形参:形式参数
形式参数:形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。
也就是说形参的生命周期仅在函数内,在函数结束时被销毁,生命周期也随之结束。
2.函数的实参:实际参数
实际参数:真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,他们都必须有确定的值,以便把这些值传送给形参。
在上面提到的swap1方法中,实参a、b传递给形参x、y,x、y可以理解为是实参的临时拷贝,在swap1函数执行结束时即被销毁。这也是swap函数无法达到交换a、b的原因。
结论:
形参实例化后相当于实参的一份临时拷贝。
3.函数的调用:传值调用、传址调用
1.传值调用(swap的传递方式)
顾名思义:传递的是变量
函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参。
2.传址调用(swap1的传递方式)
顾名思义:传递的是变量的地址
- 传址调用时把函数外部创建的变量的内存地址传递给函数参数
- 这种传参方式可以让函数外部的变量与真实的变量建立联系,可以通过*和&反向检索到真实的值,因此函数内部可以直接操作函数外部的变量。
注:数组的传参,实际传递的不是数组本身,而是仅仅传递了数组的首个元素的地址;因此需要传址调用。因此。函数内部如果有需要某个数组的元素个数,需要在函数外部计算好元素的个数,然后传递给函数使用。