首先我们来定义一个函数,使其可以交换两个整形变量的内容.

#include <stdio.h>
#include <stdlib.h>
void Swap(int x, int y){int tmp;tmp = x;x = y;y = tmp;
}
int main(){int num1 = 10;int num2 = 20;Swap(num1,num2);printf("num1 = %d,num2 = %d\n",num1,num2);
}

程序运行结果如下

我们不是定义了一个函数,要将num1与num2的值进行交换吗?为什么num1与num2的值没有发生变化呢?这就涉及到了C语言中函数的参数问题.
函数的参数
实际参数(实参):实参是真实传给函数的参数,实参可以是常量,变量,表达式,函数等.但无论实参是那种类型的量,在进行函数调用时,他们都必须要有确定的值,以便于将这些值传送给形参.
形式参数
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(也就是分配内存单元),所以叫形式参数.形式参数当函数调用完成之后就自动销毁了.因此形式函数只有在函数中有效.
在面的Swap函数中的参数x,y都是形式参数,在main函数中传给Swap的num1,num2是实际参数.
我们可以来看一下上述Swap(a,b)的等价代码

int x = a;
int y = b;
int tmp = x;
x = y;
y = tmp;

我们可以理解为函数的形参是实参的一份拷贝.
代码修改如下

#include <stdio.h>
#include <stdlib.h>
void Swap(int* x,int* y){int tmp = *x;*x = *y;*y = tmp;
}
int main(){int num1 = 10;int num2 = 20;Swap(&num1,&num2);printf("num1 = %d,num2 = %d",num1,num2);system("pause");return 0;
}

传值调用:
函数的形参与实参分别占有不同内存块,对形参的修改不会影响实参.传址调用:
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式.这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量.

C语言当中的实际参数及形式参数相关推荐

  1. c语音学习进阶-C语言带命令行参数的程序设计

    C语言带命令行参数的程序设计 (1)深入理解并学习带命令行参数的程序设计方法,使用c 语言完成带命令行参数的科学计算程序,能从给定的任意文件名的文件当中输入数据,并能向给定的任意文件名的输出文件当中输 ...

  2. C语言的三种参数传递方式

    原 C语言的3种参数传递方式 2017年09月14日 18:30:26 采香行处 阅读数:14619 </div><div class="operating"&g ...

  3. 系统开发c语言技术参数,1 C语言 gcc 介绍 C 语言编译 main接受参数

    1 C语言 gcc 介绍 C 语言编译 main接受参数 发布时间:2020-07-19 20:18:28 来源:51CTO 阅读:1216 作者:990487026 1第一个c语言的hello wo ...

  4. C语言中结构体参数变量的传递

    c语言  结构体  函数  参数  传递 一.前言 本文中的程序实现对员工信息结构体字段赋值并打印出来的功能.该结构体的定义如下: // 员工信息结构体 typedef struct {INT8 sz ...

  5. ​Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数

    ​Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift ...

  6. c语言理解参数,c语言中对可变参数列表的简单理解

    函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现. 可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中.头 ...

  7. C语言字符串做函数参数

    C语言字符串做函数参数 深入理解指针 一维字符串内存模型:两种 典型错误知多少 深入理解指针 注意 指针和数组的巨大区别 char *p = "abcdefg"; Char *bu ...

  8. c语言 函数多个参数,C语言函数可变参数

    C语言函数可变参数教程 可变参数的函数必须至少有一个强制参数,可选参数的类型可以变化.可选参数的数量由强制参数的值决定,或由用来定义可选参数列表的特殊值决定. 对于每一个强制参数来说,函数头部都会显示 ...

  9. C语言 函数不定长参数 ##__VA_ARGS__经典案例 - C语言零基础入门教程

    目录 一.##__VA_ARGS__简介 二.##__VA_ARGS__经典案例 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.## ...

最新文章

  1. 处理问题:变量名‘@UserName’已声明。变量名在插叙批次或存储过程内部必须唯一
  2. 防雪崩利器:熔断器 Hystrix 的原理与使用--转
  3. halcon的算子清点:Chapter 7 :Image
  4. 五种开源协议的比较(BSD_Apache_GPL_LGPL_MIT)
  5. 关于URL编码/javascript/js url 编码
  6. Jquery实现图片的预加载与延时加载
  7. 我的世界服务器显示fps,我的世界提升fps的方法 低配玩家必备秘籍
  8. 苹果手机录屏软件_4款手机录屏软件推荐,你觉得哪款更好用?
  9. w ndows模拟器,iPad 模拟器 模拟器(windows - iPadian)
  10. 日常知识点之公开课内存碎片优化(内存池)
  11. 尚硅谷IDEA常用快捷键-宋红康
  12. 小米8刷原生安卓系统
  13. 分布式 | BenchmarkSQL 压测 dble 性能调优指南
  14. .Net 文件名后缀的详细解释
  15. 华硕 X542UQ REV:2.1
  16. 后期维特根斯坦的语境观“:语言游戏”与“生活形式”
  17. 磁波刀和海扶刀的区别
  18. elasticsearch 生产级别深度优化
  19. java反射的作用于原理、初学者
  20. Metasploit进行渗透测试的常用流程【入门】

热门文章

  1. DTFT, DFT, FFT 的区别、联系和特点
  2. 低调做人的智慧课(附XMIND阅读笔记)
  3. Django-website 程序案例系列-1 最简单的web服务器
  4. 千锋教育python2104期总结day15
  5. 最早截止时间有限(EDF)算法、最低松弛度优先(LLF)算法
  6. i3wm中截图软件flameshot deepin-screenshot
  7. Echarts 实现动态数据时间轴
  8. mysql cluste 5.6.29 ndb-7.4.11搭建实战
  9. 斯坦福大学公开课 :机器学习课程
  10. 我的第一份工作-檀木科技