漫谈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\n", x, y);
}

main()
{
int a = 4,b = 6;
Exchg1(a, b);
printf("a = %d, b = %d\n", 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.\n", *px, *py);
}

main()
{
int a = 4;
int b = 6;
Exchg2(&a, &b);
printf("a = %d, b = %d.\n", 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\n", x, y);
}

main()
{
int a = 4;
int b = 6;
Exchg3(a, b);
printf("a = %d, b = %d\n", 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

[关闭]

漫谈C指针:参数传递的三道题目的更多相关文章

  1. 从三道题目入门frida

    偶然从看雪看到了一篇入门frida的题目,正好苦于没练手的东西,直接上手一波 1.第一题jadx打开,也没有壳和混淆,整体非常清晰,判断的逻辑也很简单 发现其实就是两个输入框,一个用户名一个密码,先拼 ...

  2. C语言中和指针相关的四道题目

    例子1. void fun (int *x , int *y) { printf("%d, %d", *x, *y) ; *x = 3; *y = 4;} main(){ int ...

  3. CodeForce——Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)前三道题目题解

    目录 A: B: C: 题目链接 A Divide and Multiply standard input/output 1 s, 256 MB 正在上传-重新上传取消 x13036 B Willia ...

  4. 《算法C语言实现》————三道题目

    1.对于N = 10,100和1000,记录你的运行环境中分别运行一下程序所花费的时间.(用python) import datetime global a a = 0 def time_1(s): ...

  5. 彻底搞定 C/C++ 指针

    1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧! 先来理解理解内存空间吧!请看下图: 内存地址→ 6 7 8 9 10 11 12 ...

  6. c语言 函数传输传递的三种方式(值、指针、引用)

    本文摘自<彻底搞定c指针> 一.三道考题开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行……唉呀,谁扔我鸡蛋?)考题一,程序代码如下:void Exchg1(int x, in ...

  7. 彻底搞定c指针

    第一篇 变量的内存实质 一.先来理解C语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质,所以我就从“变量”这个东西开始讲起吧! 先来理解理解内存空间吧!请看下图: 内存地址→   ...

  8. 彻底搞定C语言指针(精华版)

    1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧! 先来理解理解内存空间吧!请看下图: 内存地址→ 6 7 8 9 10 11 12 ...

  9. C语言的参数传递

    一.三道考题 开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行……唉呀,谁扔我鸡蛋?) 考题一,程序代码如下:void Exchg1(int x, int y){   int tmp;  ...

随机推荐

  1. 机器学习简要笔记(三)-KNN算法

    #coding:utf-8 import numpy as np import operator def classify(intX,dataSet,labels,k): ''' KNN算法 ''' ...

  2. 由web项目中上传图片所引出的路径问题

    我在做javaweb项目的时候,有个项目中需要进行图片的上传,有次我重新部署项目后,发现之前上传的图片不见了,最后找出原因:图片上传在服务器目录上,而不是绝对路径,所以特别想弄清楚javaweb项目中 ...

  3. Android转场动画,Avtivity转场动画;

    转场动画 - 共享元素动画 先看效果: Activity1点击小图标开启Activity2: 开启Activity2效果就像是小图标放大了填充上去的,关闭Activity2回到Activity1时又像 ...

  4. excel 获取提取数字

    =MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&"0123456789")),2*LEN(A2)-LENB(A2)) 第一,如果需要提取 ...

  5. 简单方法解决bootstrap3 modal异步加载只一次的问题

    用过bootstrap3自身的modal的remote属性的人可能都有相同的疑惑:就是点击弹出modal后再次点击会从缓存中加载内容,而不会再次走后台,解决办法就是只要让modal本身的属性发生变化, ...

  6. <Linux> 文件夹右下角有锁,解锁

    sudo chown -R $USER 文件夹路径 例如:sudo chown -R $USER ~/scala

  7. uva-321-暴力枚举-隐式图搜索

    题意:给你n个房间,有许多灯的控制开关,i房间灯的开关在j房间,未开灯的房间不能进,i房间和j房间之间如果没有门,也不能从i进入到j,开始房间是1,并且灯是开着的,问你是否能够走到最后一个房间n,并且 ...

  8. python学习笔记_week5_模块

    模块 一.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能), 本质就是.py结尾的python文件(文件名:test.py,对应模块名:test) 包:用来从逻辑上 ...

  9. Linux系统Oracle启动、关闭

    Linux系统启动Oracle命令 su - oracle sqlplus /nolog conn / as sysdba startup exit lsnrctl start exit Linux系 ...

  10. c# 和 java <转载>http://www.cnblogs.com/zhucai/archive/2011/02/16/csharp-compare-java.html

    从语法层面来讲,c# 和 java 是非常相似的. <转载> 这篇文章对C#与Java做一个语言级的对比,方便C#转Java或Java转C#的人有个大致了解.这里大致用C#3.0与Java ...