代码编织梦想

原标题:C语言函数的形参和实参

上一个例程中在进行函数调用的时候,不需要任何参数传递,所以函数定义和调用时括号内都是空的,但是更多的时候我们需要在主调函数和被调用函数之间传递参数。在调用一个有参数的函数时,函数名后边括号中的参数叫做实际参数,简称。而被调用的函数在进行定义时,括号里的参数叫做形式参数,简称。我们用个简单程序例子做说明。

unsigned char add(unsigned char x, unsigned char y); //函数声明

main(){

unsigned char a = 1;

unsigned char b = 2;

unsigned char c = 0;

//调用时,a 和 b 就是实参,把函数的返回值赋给 c

//执行完后,c 的值就是 3

c = add(a, b);

(1);

}

//函数定义,这里括号中的 x 和 y 就是形参

unsigned char add(unsigned char x, unsigned char y){

unsigned char z = 0;

z = x + y;

urn z; //返回值 z 的类型就是函数 add 的类型

}

这个演示程序虽然很简单,但是函数调用的全部内容都囊括在内了。主调函数 main 和被调用函数 add 之间的数据通过形参和实参发生了传递关系,而函数运算完后把值传递给了变量 c,函数只要不是 void 类型,就都会有返回值,返回值类型就是函数的类型。

关于形参和实参,还有以下几点需要注意:

函数定义中指定的形参,在未发生函数调用时不占内存,只有函数调用时,函数 add中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放,这个前边讲过了,形参是局部变量。

实参可以是常量,也可以是简单或者复杂的表达式,但是要求他们必须有确定的值,在调用发生时将实参的值传递给形参。如上边这个程序也可以写成:c = add(1, a+b);

形参必须要指定数据类型,和定义变量一样,因为它本来就是局部变量。

实参和形参的数据类型应该相者赋值兼容。和变量赋值一样,当形参和实参出现不同类型时,则按照不同类型数值的赋值规则进行转换。

主调函数在调用函数之前,应对被调函数做原型声明。

实参向形参的数据传递是单向传递,不能由形参再回传给实参。也就是说,实参值传递给形参后,调用结束,形参单元被释放,而实参单元仍保留并且维持原值。

责任编辑:

形参与实参(1)------函数形参与局部变量在内存中的处理_xiao_bai_zm的博客-爱代码爱编程

首先,实现一个“交换两个整形变量的值”的函数。 由结果可知,这样做并不能真正完成交换数据,手工分析如下: 由上图可见,Exchange()函数并没有更改main()函数中num1和num2的值。 在内存中的解释如下: 解释:先将主函数中的变量入栈(这个栈,指的是:操作系统内存管理角度的”系统堆栈“), 执行过程:先将num1入栈,再将变量num2

java基础------成员变量和局部变量的区别和形参问题_玉成226的博客-爱代码爱编程

在类中的位置不同 (1)成员变量:类中方法外。 (2)局部变量:方法内部或者方法声明上。 在内存中的位置不同 (1)成员变量:堆内存。 (2)局部变量:栈内存。 生命周期不同 (1)成员变量:随着对象的存在而存在,

关于c语言函数形参(全局变量)的几点说明_qswz的博客-爱代码爱编程_函数的形参都属于全局变量

最近在写队列函数时,在调试过程中碰到形参的一些问题,作为心得写在这边。 1.函数的形参属于局部变量,仅在定义的函数内有效,函数返回后失效。 2.当在一个函数(比如main函数)内调用另外一个函数时,例如: void fu

python_函数参数与局部变量_xyang_1128的博客-爱代码爱编程_本地函数的局部变量和参数

形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量 -----在python中,函数即变量,所以,函数也可以当成参数传入,传入了函数参数或返回了函数的函数可以称为高阶函数,,,, def test(x,y,t): print (t(x) +

实参与形参、全局变量与局部变量的区别_weixin_33736048的博客-爱代码爱编程

2019独角兽企业重金招聘Python工程师标准>>>   1 前言          本文档是描述编程基础中形参与实参、全局变量与局部变量的区别。   2 名词解析 2.1 形参 定义:全称"形式参数",用于定义方法的时候使用的参数,目的用来

java中形参和实参的区别-爱代码爱编程

java中形参和实参的区别 一、形参        形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。 二、实参        实参出现在主调函数中,进入被调函数后,实参变量也不能使用。 三、调用        形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束

c语言之形参和实参,全局变量和局部变量-爱代码爱编程

c语言中形参与实参: 形参 form parameter 实参 real parameter出现在函数定义中的参数,就叫形参出现在函数调用中的参数,就叫实参 函数定义: int max( int a , int b ) //这里的a,b就是形参 { //在函数中,形参就可以当作是一个局部变量。 if ( a>b ) return a; else

局部变量和全局变量-爱代码爱编程

形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。 这说明形参变量的作用域非常有限,只能在函数内部使用,离开该函数就无效了。所谓作用域(Scope),就是变量的有效范围。 局部变量 定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。例如: int f1(int

3-5-1 函数形式参数和局部变量的异同点-爱代码爱编程

#include <stdio.h> #include <stdlib.h> /* 一:相同的地方 形式参数也是局部变量 只作用于该函数 有作用限制,就决定了该变量的生效范围 生周期也是类似 二:形式参数和局部变量的差异性 */ void test4(int date) { printf("test4:date=%d\n

java中形参和局部变量_java面向对象(类与对象,局部变量成员变量,基本类型和引用类型作为参数传递)...-爱代码爱编程

一.类和对象的区别 类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体 可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系。类用于描述多个对象的共同特征,它是对象的模板。对象用于描述现实中的个体,它是类的实例 二.局部变量和成员变量区别 1.定义的位置不同 定义在类中的变量

c语言形参跟局部变量区别,调用函数时,形参的地址与局部变量地址同样-爱代码爱编程

调用函数时,形参的地址与局部变量地址一样 #include #include #include typedef struct { int *base; int *top; int stackSize; }SeqStack; void initial ( SeqStack *S ) { S->base = ( int * ) m