• 【C语言基础】函数的参数是指针


    📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
    📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
    📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
    📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处


    函数的参数不仅可以是整数、浮点数等数据,还可以是指针类型。它的左右是将一个变量的地址传送到另一个函数中。

    本篇主要指针变量作为函数参数,通过以下俩个case来说明其使用方法。

    case1:简单使用

    当函数的参数是指针时,这意味着函数将接受一个指向某个数据类型的内存地址,而不是直接接收该数据的值。通过传递指针作为参数,函数可以直接访问和修改被指针引用的数据。

    例如,考虑以下示例代码:

    #include 
    
    void modifyValue(int *ptr) {
        *ptr = 10; // 修改指针所指向的变量的值
    }
    
    int main() {
        int num = 5;
        printf("Before modification: %d\n", num);
        
        modifyValue(&num); // 将变量 `num` 的地址传递给函数
        
        printf("After modification: %d\n", num);
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    在上述示例中,我们定义了一个函数 modifyValue,它接受一个整数指针作为参数 ptr。在函数内部,我们使用解引用操作符 * 来修改指针所指向的变量的值。

    main 函数中,我们声明了一个整数变量 num 并初始化为 5。然后,我们调用 modifyValue 函数并将 &num 作为参数传递,其中 & 运算符用于获取变量 num 的地址。

    当函数执行时,指针 ptr 将指向变量 num 的地址,并通过解引用操作符 * 修改了 num 的值。因此,在函数结束后,num 的值变为 10,并在 main 函数中打印输出。

    通过传递指针作为函数参数,我们可以避免复制数据的开销,并且函数能够直接对原始数据进行修改。这在需要在函数中修改变量的值或者在函数间传递大型数据结构时非常有用。

    case2:交换两个变量的值

    void swap(int *p1, int* p2)                         //定义交换函数
    {
        int temp;
        temp = *p1;                                     //将p1指向的变量的值给temp
        *p1 = *p2;                                       //将p2的值给p1,此时p1改变
        *p2 = temp;                                     //将原本保留的p1的值给p2,此时p2改变
        printf("互换两个变量的值后,分别为:%d、%d", *p1, *p2);
    }
    //通过这个示例,我们可以更加深刻的理解指针p与解引用后的指针*p的不同作用,p表示的是地址,*p表示的是数值
    int main() {
        int num1 = 5;
        int num2 = 10;
        swap(&num1, &num2);//指针形参需要与变量进行绑定,因此输入的实参为地址
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

  • 相关阅读:
    CSS的var()函数用法与JS获取css函数变量值的方法
    [附源码]java毕业设计公务员报名
    dns隧道的通信原理及特征
    08-Redis 【哨兵挂了,redis 还能正常工作吗?】
    百趣代谢组学资讯:全基因组代谢组学模型揭示长寿秘诀:脂肪酸氧化升高
    java读取CSV文件
    RL强化学习——详解Q-learning和SARSA算法
    探索电子元器件商城:从原型到批量生产的选择
    Studio One 6 for Mac v6.5.1激活破解版(音乐制作工具)
    dreamweaver作业静态HTML网页设计——摩尔庄园7页HTML+CSS+JS DW大学生网页作业制作设计 Dreamweaver简单网页
  • 原文地址:https://blog.csdn.net/weixin_51244852/article/details/134042698