库函数学习网站:
www.cplusplus.com/reference/clibrary
官方英文版:https://en.cppreference.com
官方中文版:https://zh.cppreference.com
尽量提高英文阅读能力,对后续学习工作帮助非常大。
函数命名都是有意义的,大多包含功能英文缩写,库函数的使用必须包含头文件。
函数的组成:
ret_type fun_name(para1,*)
{
statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1 函数参数
{statement;} 函数体,函数的实现
#include <stdio.h>
int max(int x, int y)
{
return (x > y ? x : y);
}
void print()
{
printf("void 无返回类型函数");
}
int main()
{
int a = 19;
int b = 29;
scanf("%d %d", &a, &b);
int bigger = max(a, b);
printf("%d\n", bigger);
print();
return 0;
}
函数传参时 要注意 修改形参的值 不会 影响实参的值
#include <stdio.h> void swap(int x, int y) { int temp = 0; temp = x; x = y; y = temp; printf("x=%d,y=%d\n", x, y); } int main() { int a = 1; int b = 10; swap(a, b); printf("a=%d,b=%d\n", a, b); return 0; }
a和b的值完全没变,这是为什么?
进入调试界面
发现,虽然将 a, b 的值传给了 x,y,但他们地址不同。修改x和y的值不会影响a和b的值。
综上,注意实参传形参时,形参是实参的临时拷贝,对形参的修改不会影响实参。
既然如此,我们直接将地址传入函数,再操作即可。
#include <stdio.h>
//void swap(int x, int y)
//{
// int temp = 0;
// temp = x;
// x = y;
// y = temp;
// printf("x=%d,y=%d\n", x, y);
//}
void swap(int* px, int* py)
{
int temp = *px;
*px = *py;
*py = temp;
printf("*px=%d,*py=%d\n", *px, *py);
}
int main()
{
int a = 1;
int b = 10;
/*swap(a, b);*/
swap(&a, &b);
printf("a=%d,b=%d\n", a, b);
return 0;
}