‘壹’ c语言里实参和形参怎么用,值传递和址传递怎么用。
例如:你自己定义一个函数
int
max(int
a,int
b){...
}
在这里a,b就是形参,接下来你会调用max函数,如:
void
main()
{
int
c,int
d;
.....
max(c,d);
}
这里c
d就是实参
所谓形参就是在函数定义体中的参数
所谓实参就是在调用函数时实际传进函数的参数
‘贰’ 在C语言中,定义一个函数的形参和实参之间具体是如何进行参数传递的
传值调用和引用调用传值调用和引用调用指的是用于参数传递过程中的一种机制。传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,将实参的地址传递给形参,从表面上看是以实参变量取代形参,因此任何发生在形参上的改变实际上都发生在实参变量上。
形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。没有形参的函数在形参表的位置应该写void.main
函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。
形参和实参的对照实例(C语言版)main(){int
n;printf("input
number
\n");scanf("%d",&n);s(n);printf("n=%d\n",n);}int
s(int
n){int
i;for(i=n-1;i>=1;i--)n=n+i;printf("n=%d\n",n);}
‘叁’ c语言形参的值能不能传递给实参
形参和实参拥有分别的存储空间,即便是指针传递,改变的也只可能是这个指针变量所指向的内容,而不是指针变量本身的值,也即,如有指针变量p,那对实参的变化,有可能改变的也只是*p的值,而不是p本身的值。
实参和形参在英文中,argument和parameter经常可以互换使用,但是C99标准规定了:
对于actualargument或actualparameter使用术语argument(译为实参);对于formalargument或formalparameter使用术语parameter(译为形参)。
为遵循这一规定,我们可以说形参是变量,实参是函数调用提供的值,实参被赋给相应的形参。因此,在上述示例中,times是pound()的实参,n是pound()的形参。类似地,在函数调用pound(times+4)中,表达式times+4的值是该函数的实参。
(3)c语言形参实参的传递扩展阅读
函数的调用
第1个函数调用是pound(times),times的值5被赋给n。因此,printf()函数打印了5个井号和1个换行符。第2个函数调用是pound(ch)。
这里,ch是char类型,被初始化为!字符,在ASCII中ch的数值是33。但是pound()函数的参数类型是int,与char不匹配。
程序开头的函数原型在这里发挥了作用。原型(prototype)即是函数的声明,描述了函数的返回值和参数。pound()函数的原型说明了两点:
-该函数没有返回值(函数名前面有void关键字);-该函数有一个int类型的参数。
‘肆’ 关于C语言里实参和形参传递
voidfun(inta,intb){
intt;
t=a;
a=b;
b=t;
}
确实执行了操作,但是操作结果无法返回到main()函数,因此结果不变.
可通过指针传递地址,改正如下(但是我不太明白你的程序的意思):
#include<stdio.h>
voidfun(int*a,int*b)
{intt;
t=*a;*a=*b;*b=t;
}
main()
{intc[10]={1,2,3,4,5,6,7,8,9,0},i;
for(i=0;i<=10;i+=2)fun(&c[i],&c[i+1]);
for(i=0;i<10;i++)printf("%d",c[i]);
printf("
");
getch();
}
‘伍’ c语言形参和实参是怎样传递数据的
我简单描述一下~c语言传递参数机构是这样的~非指针类的数据传递参数时传数值,指针类数据传递参数时传地址
(这里数组名也算指针)
比如
int max(int a,int b);
这时候如果调用这个函数max(x1,x2);仅仅将x1和x2的数值传递给函数max,a与x1占有不同的内存区域
int max(int *a,int *b);
这时候如果调用这个函数max(&x1,&x2);则将x1、x2的地址传递给a、b,a指向x1的地址,也就是说a可以操控x1的数值。
如果想具体了解可以参看谭浩强教授写的~c语言程序设计~很好很强大~
‘陆’ C语言中实际参数和形式参数的设置及传递方式
C语言中实际参数(实参)与形式参数(形参)之间的传递方式有传值和传地址两种函数调用方式。
下面通过举例来说明实参和形参的设置方法以及传值与传地址的两种函数调用方式。
值传递方式:
#include<stdio.h>
voidfun(inta,intb)//此处a,b为形参
{
a++;
b++;
}
voidmian()
{
inta=1,b=2;
fun(a,b);//按传值方式调用函数fun,此处a,b为实参
printf("%d,%d ",a,b);//输出a=1,b=2
}
地址传递方式:
#include<stdio.h>
voidfun(int*a,int*b)
{
*a=4;
*b=5;
}
voidmian()
{
inta=1,b=2;
fun(&a,&b);//按传地址方式调用函数fun
printf("%d,%d ",a,b);//输出a=4,b=5
}
‘柒’ c语言中,实参向形参传递时,什么时候用单向值传递,什么时候用地址传递
C语言在形参和实参之间传递的不仅是值传递,也包括地址传递的。
细节如下:
C语言函数参数传递包括按值传递和按地址传递两种;
当形式参数是数组、指针时都是使用的按地址传递。
‘捌’ C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是什么
函数只有两种传递方式:
1、值传递,又称单向传递,只能把实参数值传给形参 ,形参最后的结果不影响实参(形参改变大小 ,实参大小不变)。
2、址传递,通过指针,把实参的地址给形参,形参的大小可以影响实参。
(8)c语言形参实参的传递扩展阅读:
实参变量和形参变量之间的调用过程
1、函数的形参列于函数声明中,在函数定义的函数体内使用,在未出现函数调用时,形参不占内存中的存储单元。
2、将实参的值传递给形参,当函数被调用时,实参列在函数名后面的括号里,执行函数调用时,实参被传递给形参。
3、在执行函数期间,由于形参已经有值,可以利用其进行相关运算。
4、通过return语句将函数值带回到主调函数。
5、调用结束,形参单元被释放。实参单元仍保留并维持原值(值传递)。
‘玖’ C语言形参和实参的传递
fun函数内部的形参a、b、t是传递给fun函数的实参的拷贝,交换它们不会影响到外部实参的值。
‘拾’ C语言中形参与实参怎么传递
我简单描述一下~c语言传递参数机构是这样的~非指针类的数据传递参数时传数值,指针类数据传递参数时传地址
(这里数组名也算指针)
比如
int
max(int
a,int
b);
这时候如果调用这个函数max(x1,x2);仅仅将x1和x2的数值传递给函数max,a与x1占有不同的内存区域
int
max(int
*a,int
*b);
这时候如果调用这个函数max(&x1,&x2);则将x1、x2的地址传递给a、b,a指向x1的地址,也就是说a可以操控x1的数值。
如果想具体了解可以参看谭浩强教授写的~c语言程序设计~很好很强大~