C语言学习笔记20230322

目录

1.函数的分类:(库函数、自定义函数)

1.库函数:

2.自定义函数

2.函数的参数(形参、实参)

1.函数的形参:形式参数

 2.函数的实参:实际参数

 3.函数的调用:传值调用、传址调用

    1.传值调用(swap的传递方式)

    2.传址调用(swap1的传递方式)


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的传递方式)

        顾名思义:传递的是变量的地址

  • 传址调用时把函数外部创建的变量的内存地址传递给函数参数
  • 这种传参方式可以让函数外部的变量与真实的变量建立联系,可以通过*和&反向检索到真实的值,因此函数内部可以直接操作函数外部的变量。

 注:数组的传参,实际传递的不是数组本身,而是仅仅传递了数组的首个元素的地址;因此需要传址调用。因此。函数内部如果有需要某个数组的元素个数,需要在函数外部计算好元素的个数,然后传递给函数使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值