库函数学习网站:

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;
}