当前位置:首页 » 编程语言 » c语言函数实参到形参两种方式
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言函数实参到形参两种方式

发布时间: 2022-04-28 08:05:22

1. 关于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();

}

2. c语言函数调用实参到形参传递的是值,那地址是怎么传递的

首先,是实参调用形参.你说的地址传递其实和值传递差不多.比如max( &a, &b );这是实参int max( int *p, int *p2 )这是形参.比如实参,&a和&b都是取a和b的地址,又因为max()函数的形参是*p和*p2( *p和*p2被声明为整型的指针 ),因为指针是存地址的,所以把a和b的地址赋给p和p2.下面是一个把a和b的值交换的程序./* ============================ 程序名:max.c 目的:用地址交换两个变量的值. ============================ */#include int max( int *p, int *p2 ); /* 声明函数 */ int main( void ){int a, b;scanf( "%d", &a ); /* 输入两个变量的值 */ scanf( "%d", &b ); printf( "a = %d, b = %d\n", a, b );return 0;}int max( int *p, int *p2 ){int temp; /* 定义一个临时变量,为的只是交换 */temp = *p;*p = *p2;*p2 = temp; /* 己交换 */}

3. C语言函数实参与形参的结合方式有哪两种

值传递 和 地址传递

4. 为什么在c语言中形参和实参之间传递的只能是值传递

其实c语言有两种形参和实参之间传值方式,一种是传值,一种是传这个值的地址,但实际上地址也是一个值,对应计算机存储空间上的编号,所以统称为传值。

5. 怎样定义C语言函数中的参数(实参、形参)

不知道函数调用原理的话,很难说得清楚的。粗略的说在C中函数其实是分成三个部分,分别是声明、实现和使用。声明就是告诉C有这么个函数,实现就是这个函数的完整代码,使用则是调用这个函数帮你做运算或者是做事情。为了让函数能做更多的事情,就需要一种方法能向函数传递性息,最可靠、最方便的方法就是参数传递,C就是这样做的。参数传递也不是简单的一件事情,首先在调用者和被调用者之间得有个约定,大家约定好了参数放什么地方,如何使用,这个就称为调用约定。现在我们回过头来看什么叫实参和形参。由上面的叙述可以看到,函数其实有一定的独立性的,参数是在调用约定下放在指定地方供函数使用的,在我们实现函数的时候,实际的参数是什么我们还不知道,但我们知道有多少参数,分别是什么数据类型的和放在什么地方(顺序),这个是由调用约定来保证的。我们知道的这些就是形式的或者说是逻辑的,我们在实现函数(编写函数体)的时候需要给他们命名,以便使用,这些在函数实现的时候命名的形式上的参数就是形式参数,简称形参。而在实际调用发生的时候,调用者会将实际的参数放在约定好了的地方,这个实际参数简称实参。函数被运行的时候实参和形参形成了一一对应,对形参的操作就变成了对实参的操作。

对调用约定还有需要说明的就是,现在常用的调用约定都是传值的,也就是说只是传递了一个副本,这样做的结果就是你对形参的操作不会被传递出来。
是否可以解决您的问题?

6. 在C语言中,定义一个函数的形参和实参之间具体是如何进行参数传递的

主要有两种:(1)值传递:在函数调用时,将实参的值复制一份传递到调用函数中,这样,如果在调用函数中修改了参数的值,也不会影响到实参的值。(2)引用传递:与(1)相反,即会影响实参的值。如何区分它们呢?实际上,通常在定义函数时,如果参数为数组、指针或引用类型时,函数采用引用传递,否则采用值传递。

7. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是

答案是B,单向的值传递

简单变量做实参时,相应的形参变量也是简单变量,它们之间的数据传递方式是单向的值传递,即数据只能由实参传到形参,形参值的改变不影响实参值的变化。

(7)c语言函数实参到形参两种方式扩展阅读:

形参和实参的特点:

1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。

2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。

4、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

参考资料:网络——形参

8. 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
}

9. C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是什么

函数只有两种传递方式:

1、值传递,又称单向传递,只能把实参数值传给形参 ,形参最后的结果不影响实参(形参改变大小 ,实参大小不变)。

2、址传递,通过指针,把实参的地址给形参,形参的大小可以影响实参。

(9)c语言函数实参到形参两种方式扩展阅读:

实参变量和形参变量之间的调用过程

1、函数的形参列于函数声明中,在函数定义的函数体内使用,在未出现函数调用时,形参不占内存中的存储单元。

2、将实参的值传递给形参,当函数被调用时,实参列在函数名后面的括号里,执行函数调用时,实参被传递给形参。

3、在执行函数期间,由于形参已经有值,可以利用其进行相关运算。

4、通过return语句将函数值带回到主调函数。

5、调用结束,形参单元被释放。实参单元仍保留并维持原值(值传递)。

10. c语言,关于函数调用时实参如何传递给形参

形参和实参拥有分别的存储空间,即便是指针传递,改变的也只可能是这个指针变量所指向的内容,而不是指针变量本身的值,也即,如有指针变量p,那对实参的变化,有可能改变的也只是*p的值,而不是p本身的值。