首页技术c语言函数参数传递方式三种?c语言子函数调用子函数

c语言函数参数传递方式三种?c语言子函数调用子函数

编程之家2026-05-28623次浏览

大家好,如果您还对c语言函数参数传递方式三种不太了解,没有关系,今天就由本站为大家分享c语言函数参数传递方式三种的知识,包括c语言子函数调用子函数的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

c语言函数参数传递方式三种?c语言子函数调用子函数

c语言:字符串做为函数参数传递

1、值传递

void swap(int x,int y)

{ int temp= x;

x= y;

y= temp;

}void main()

c语言函数参数传递方式三种?c语言子函数调用子函数

{

int a= 10, b= 20;

swap(a, b);

}

执行后,并不会交换。

2、引用传递

c语言函数参数传递方式三种?c语言子函数调用子函数

void swap(int&x,int&y)

{ int temp= x;

x= y;

y= temp;

}void main()

{

int a= 10, b= 20;

swap(a, b);

printf("a=%d

b=%d

", a, b);

}

执行后,发生交换。

3、指针传递

void swap(int*x,int*y)

{ int temp=*x;*x=*y;*y= temp;

}void main()

{

int a= 10, b= 20;

swap(&a,&b);

printf("a=%d

b=%d

", a, b);

}

执行后,发生交换。

参数传递只有上面三种,但是如果加上数组,就会产生几种新形式。

首先,明确数组型变量名本身只是该数组所占存储空间的首地址:

int a[3]={ 1, 2, 3}; int*p= a;//等价于下行//int*p=&a[0];

printf("%d",*p);

典型的数组做参数。

void fun(char s[]){ for(int i= 0; s[i]!='\0'; i++)

printf("%c", s[i]);

}void main()

{ char str[]="Hello World!";

fun(str);

}

函数调用时,这里系统不会为形参分配数组存储空间,而是仅仅分配一个存放数组地址(第一个元素地址)的存储空间,此后,将实参数组的首地址传递给形参变量。

其实本质与下相同,只不过还是数组形式的(数组名代替指针)。

既然数组型变量名本身只是该数组所占存储空间的首地址,我们当然可以用指针做形参来接收数组实参。

void fun(char*p){ while(*p)

{

printf("%c",*p);

p++;

}

}void main()

{ char str[]="Hello World!";

fun(str);

}

不过问题是如果这样,无法把握数组结束(除非知道数组长度)。而对于字符数组(上例),由于字符串末尾有结束标志'\0'(ascii码正好是0),所以就很容易利用指针来判断字符串是否结束。

扩展资料:

调用带参数的函数:

在调用函数时,可以向其传递值,这些值被称为参数。

这些参数可以在函数中使用。

可以发送任意多的参数,由逗号(,)分隔:

myFunction(argument1,argument2)。

当声明函数时,请把参数作为变量来声明:

function myFunction(var1,var2){这里是要执行的代码}。

变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。

按值传递参数:

按值传递参数时,是将实参变量的值复制一个到临时存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实参变量保持调用前的值不变。

按值传递参数时,需要在参数名前加"ByVal"关键字。

按地址传递参数:

按地址传递参数时,把实参变量的地址传送给被调用过程,形参和实参共用内存的同一地址。在被调用过程中,形参的值一旦改变,相应实参的值也跟着改变。

如果实参是一个常数或表达式,Visual Basic 6.0会按"传值"方式来处理,按地址传递不需要"ByVal"关键字。

按数组传递参数:

在VB6.0中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。数组参数在传递时应注意以下两个方面:

①在实参和形参列表中只写数组名,忽略维数的定义,但圆括号不能省,当数组作为参数传递时,系统将实参数组的起始地址传给过程,使形参数组也具有与实参数组相同的起始地址,若参数是多维数组,每维以逗号分隔。

②被调过程可分别通过Lbound和Ubound函数确定实参数组的下界和上界。

参考资料来源:百度百科-参数传递

参考资料来源:百度百科-字符串

以下关于C语言函数参数传递方式的叙述正确的是

【答案】:A

数据只能由实参单向传递给形参称为“值传递”,而不能由形参传回来给实参,A选项正确;数组名、指针等作参数,实参传递给形参的是地址值,这样形参和实参就指向同一段内存单元,在函数体内对形参数据的改变也将影响到实参。实参和形参之间不可双向传递。B、D选项错误。数据不能从形参传递给实参,C选项错误。

c语言中函数调用有三种方法,能帮忙各举个例子吗

C语言中,函数调用的一般形式为:

函数名(实际参数表)

对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。各实参之间用逗号分隔。

8.4.2

函数调用的方式

在C语言中,可以用以下几种方式调用函数:

1.

函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如:z=max(x,y)是一个赋值表达式,把max的返回值赋予变量z。

2.

函数语句:函数调用的一般形式加上分号即构成函数语句。例如:

printf

("%d",a);scanf

("%d",&b);都是以函数语句的方式调用函数。

3.

函数实参:函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如:

printf("%d",max(x,y));

即是把max调用的返回值又作为printf函数的实参来使用的。在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。对此,各系统的规定不一定相同。介绍printf

函数时已提到过,这里从函数调用的角度再强调一下。

我会说我复制的?

这么清楚了应该看的懂吧?

看不懂再问我

OK,本文到此结束,希望对大家有所帮助。

js数组倒序 java实现数组倒序html查看器下载(HTML编辑器下载)