• 漫谈C指针:参数传递的三道题目



    漫谈C指针:参数传递的三道题目

    2009-07-02


    开讲之前,我先请你做三道题目。(嘿嘿,得先把你的头脑搞昏才行……唉呀,谁扔我鸡蛋?)

    考题一,程序代码如下:

    [c] view plaincopyprint?
    #include "stdio.h"

    void Exchg1(int x, int y)
    {

    //值传递:只改变形参的值,而不会改变原参的值
    int tmp;
    tmp = x;
    x = y;
    y = tmp;
    printf("x = %d, y = %d ", x, y);
    }

    main()
    {
    int a = 4,b = 6;
    Exchg1(a, b);
    printf("a = %d, b = %d ", a, b);
    return(0);
    }


    输出的结果是什么?

    答案:

    x = 6, y = 4
    a = 4, b = 6

    考题二,程序代码如下:

    #include "stdio.h"

    void Exchg2(int *px, int *py)
    {

     //引用传递:同时改变了形参和原参变量的地址和值(内容)
    int tmp = *px;
    *px = *py;
    *py = tmp;
    printf("*px = %d, *py = %d. ", *px, *py);
    }

    main()
    {
    int a = 4;
    int b = 6;
    Exchg2(&a, &b);
    printf("a = %d, b = %d. ", a, b);
    return(0);
    }


    输出的结果是什么?

    答案:
    *px = 6, *py = 4.
    a = 6, b = 4.

    考题三,程序代码如下:

    #include "stdio.h"

    void Exchg3(int &x, int &y)
    {

    //引用传参
    int tmp = x;
    x = y;
    y = tmp;
    printf("x = %d,y = %d ", x, y);
    }

    main()
    {
    int a = 4;
    int b = 6;
    Exchg3(a, b);
    printf("a = %d, b = %d ", a, b);
    return(0);
    }


    你不在机子上试,能作出来吗?你对你写出的答案有多大的把握?

    正确的答案,想知道吗?(呵呵,让我慢慢地告诉你吧。)

    好,废话少说,继续我们的探索之旅了。

    我们都知道:C语言中函数参数的传递有:值传递、地址传递、引用传递这三种形式。题一为值传递,题二为地址传递,题三为引用传递。不过,正是这几种参数传递的形式,曾把我给搞得晕头转向。我相信也有很多人与我有同感吧?

    后面部分请让我逐个地谈谈这三种传递形式。

    延伸阅读

    此文章所在专题列表如下:

    漫谈C指针:C语言变量的实质
    漫谈C指针:变量赋值与取地址
    漫谈C指针:指针是什么东西
    漫谈C指针:指针与数组
    漫谈C指针:声明指针常量
    漫谈C指针:从const int i说起
    漫谈C指针:const int *pi的语义
    漫谈C指针:参数传递的三道题目
    漫谈C指针:参数的值传递
    漫谈C指针:参数的地址传递
    漫谈C指针:参数的引用传递
    漫谈C指针:回顾指针概念
    漫谈C指针:指向另一指针地址的指针
    漫谈C指针:一个指针应用实例
    漫谈C指针:函数名其实也是指针
    漫谈C指针:函数调用的指针写法
    漫谈C指针:定义函数的指针类型
    漫谈C指针:函数指针作为函数参数使用

    标签: C指针C语言

    这是我的文章签名,在自己的文章底部展示,支持UBB标签,自动识别URL 你也可以设置自己的文章签名哦, http://www.lai18.com/user/edit.html
    如果您想留下此文,您可以将其发送至您的邮箱(将同时以邮件内容&PDF形式发送)

    相关文章推荐
    五大常用算法之五:分支限界法
    五大常用算法之四:回溯算法
    五大常用算法之三:贪心算法
    五大常用算法之二:动态规划算法
    漫谈C指针:函数指针作为函数参数使用
    漫谈C指针:定义函数的指针类型
    漫谈C指针:函数调用的指针写法
    漫谈C指针:函数名其实也是指针
    漫谈C指针:一个指针应用实例
    漫谈C指针:指向另一指针地址的指针
    漫谈C指针:回顾指针概念
    漫谈C指针:参数的引用传递
    漫谈C指针:参数的地址传递
    漫谈C指针:const int *pi的语义
    漫谈C指针:从const int i说起
    漫谈C指针:声明指针常量
    发表我的见解

    表情 (Ctrl+Enter提交)
    已有0人在此发表见解
    收藏者

    kelinlin
    收藏动态
    kelinlin 在 2009-07-02 00:00
    收藏到了《漫谈C指针与C陷阱》
    <<>>
    收藏夹《漫谈C指针与C陷阱》
    漫谈C指针:C语言变量的实质
    漫谈C指针:变量赋值与取地址
    漫谈C指针:指针是什么东西
    漫谈C指针:指针与数组
    漫谈C指针:声明指针常量
    漫谈C指针:从const int i说起
    漫谈C指针:const int *pi的语义
    漫谈C指针:参数传递的三道题目
    漫谈C指针:参数的值传递
    漫谈C指针:参数的地址传递
    << >>
    kelinlin的文件夹
    帝国CMS知识(10篇)
    Nginx技术知识(8篇)
    前端样式界面设计(7篇)
    常见MySQL错误解决(7篇)
    PHP微信开发技术(6篇)
    PHP技术修炼(5篇)
    好文章收藏夹(5篇)
    网页设计素材(5篇)
    好网站收藏夹(5篇)
    shell知识收藏(5篇)
    << >>
    文章推荐
    C语言核心之数组和指针详解
    C++ 为什么不加入垃圾回收机制
    C++ 内存分配(new,operator new)详解
    C++ 智能指针详解
    C++ 的 new 关键字深入理解
    C/C++的mem函数和strcopy函数的区别和
    C++11新特性之智能指针
    C++11新特性之Lambda表达式
    C语言运算符优先级(超详细)和口诀
    俄罗斯方块和贪吃蛇游戏软件:C语言应用
    Lai18.com IT技术文章收藏夹 在信息爆炸的时代,您的知识需要整理,沉淀,积累!Lai18为您提供一个简单实用的文章整理收藏工具,在这里您可以收藏对您有用的技术文章,自由分门别类,在整理的过程中,用心梳理自己的知识!相信,用不了多久,您收藏整理的文章将是您一生的知识宝库!
    HTTP://WWW.LAI18.COM ? 2014-2016 · 蜀ICP备15000355号-1
    反馈建议
    发送至我的邮箱
    发送《漫谈C指针:参数传递的三道题目》至您的邮箱(含PDF)


    您也可以收藏到您的账号或者直接在此导出PDF 漫谈C指针:参数传递的三道题目.pdf

    [关闭]

  • 相关阅读:
    Linux查看SSL证书是否过期
    docker安装Elasticsearch:7.6.0启动失败,ERROR: [1] bootstrap checks failed
    patroni启动,提示waiting for leader to bootstrap
    pg_buffercache
    使用oid2name列出数据库和对应的oid
    Centos7下安装ORACLE 11g,弹窗不显示
    CentOS 7.5 安装Oracle 11gR2 86%报错:Error in invoking target 'agent nmhs' of makefile
    pg中与超时设置有关的参数
    JDBC驱动程序注册 JDBC简介(二)
    JDBC设计理念浅析 JDBC简介(一)
  • 原文地址:https://www.cnblogs.com/yzryc/p/6402188.html
Copyright © 2020-2023  润新知