b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

形参与实参之间的值传递

电脑杂谈  发布时间:2019-08-09 00:03:50  来源:网络整理

c语言中 实参与对应参_单片机c语言程序设计实训100例第二版_c语言字母对应数字

先说形参与实参的差值传递:

字段读取时将实参数传递给形参称为参数传递。C语言中,取值的传递方法是“双向值传递”,形参和实参变量各自有不同的储存单元,被调用函数中的形参变量值的改变不会影响实参变量值。

举个实例

#include<stdio.h>

void swap(int x,int y)

{

int z;

z=x; x=y; y=z;

}

woid main()

{

int a,b;

a=10; b=20;

c语言中 实参与对应参_单片机c语言程序设计实训100例第二版_c语言字母对应数字

swap(a,b);

printf("a=%d\tb=%d\n",a,b);

}

运行结果:

a=10 b=20

在读取swap()变量时,赋值a 和b的值是10和20.步入被调函数时,先开辟形参单元x和y,再将a和b的值分别传递给形参变量x和y,执行swap()变量使x和y的值进行交换,所以交换的结果并不会使实参变量a和b交换,但是a和b的值仍为10和20。参数的传递方法是“双向值传递”。主要的表述就是:形参和实参变量各自有不同的储存单元,赋值有一个存储空间,行参有一个存储空间,将实参单值传递给形参,在形参的储存空间里进行的演算,所以这些运算不会对实参的储存空间形成影响。

如果也是例外的现象,就是在函数作为变量参数时。

一个变量有地址,一个数组包含若干个元素,每位数组元素都在硬盘中占用储存单元,你们都有相应的地址。既然指针可以指向函数,也就意味着它也可以指向链表元素,即把某个元素的地址放在一个指针变量中。所以所谓数组元素的时钟就是数组元素的地址。定义一个有10个元素的整容变量,int a[10]; 定义一个指向整形函数的指针变量,int *p; 若p=&a[]或p=a; 则代表将a[]元素的地址赋给了指针变量p。其中值得注意的是a代表的不是整个函数,而是代表变量名,C中应当数组名代表把函数中第一个元素的地址,所以a等同与&a[];只是方式上的不同而已。在理解了基础定义以后,我们进一不说说函数名和指向链表的指针变量的使用。

将函数名也是变量参数的时候,在实参和形参之间的相应关系有以上四种:

1.形参和实参都用函数名,如

main() f(int x[].int n)

{int a[10];{

…… ……

c语言中 实参与对应参_单片机c语言程序设计实训100例第二版_c语言字母对应数字

f(a,10); }

}

由于形参数组名接受了实参数组首元素的地址,所以在变量读取期间,赋值数组与实参数组共用一段内存空间。

2.赋值用函数名,赋值用指针变量,如

main() f(int *x,int n)

{int a[10]; {

…… ……

f(a,10); }

}

x为指向整形函数的指针变量,变量直到执行是x指向a[],借助x值的改变,可以指向a索引的任一元素。

3.实参形参都用指针变量,如

main() f(int *x,int n)

{int a[10];,*p; {

c语言中 实参与对应参_单片机c语言程序设计实训100例第二版_c语言字母对应数字

p=a; …………

f(p,10); }

}

实参p和形参x都是指针变量,p先指向链表a,即p的值就是&a[],然后将p的值传递给x,x的值作为&a[],所以借助x的变化就可使x指向a的任一元素。

4.实参为指针变量,形参为函数名,如

main() f(int x[],int n)

{int a[10],*p; {

p=a;…… ……

f(p,10); }

}

实参p为指针变量,它指向a[],形参为函数名x,但在C中将它做为指针变量来处理,但是a[]的值也传给了x,所以也可以明白为形参数组x和a索引共用同一段内存单元。

以下内容想证明字段的传递和时钟在函数中的使用,旨在证明第一种情况,提醒红字,上面将进一步证明

字段名作函数的取值,必须遵守以上准则:

(1)或者形参是函数方式,则实参必须是实际的函数名,所以实参是函数名c语言中 实参与对应参,则形参可以是同时维数的函数名或指针。

(2)要在主调函数和被调函数中分别定义函数。

(3)实参数组和形参数组必须类型相似,赋值数组可以不指明长度。

(4)在C语言中,函数名除作为函数的标识符之外,函数名还代表了该函数在硬盘中的起始地址,所以,当函数名作函数参数时,赋值与形参之间不是"值传递",而是"地址传递",赋值数组名将该函数的起始地址传递给赋值数组,两个数组共享一段内存单元c语言中 实参与对应参,编译功能不再为形参数组分配存储单元。

例9-15:分析流程的执行过程。

#include <stdio.h>

func6 ( char str[ ] )

{ printf ("%s",str);

}

main( )

{ char a[10]= "Turbo C";

func6(a); /* 数组名做递归的实参 */

}

内存空间储存状况如9-5图所示。

读取时,赋值数组将首地址a 赋值给形参数组str,两个数组共同占用相同的内存单元,共享变量中的数据,a[]与str[]代表同一个元素,a[1]与str[1]代表同一个元素。因此,当函数名做递归参数时,赋值数组的宽度与实参数组的宽度可以不相似,当赋值数组长度小与实参数组长度时,赋值数组只取部分实参数组中的数据,实参中的其他部分可以不起作用,赋值数组也可以不指明长度。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-118548-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...