当前位置:首页 » 编程语言 » c语言传参数

c语言传参数

发布时间: 2025-03-23 09:36:10

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

【答案】:A

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

❷ C语言函数传参数加一个&在前是什么意思

C语言不能在函数参数前加&,能加&的是C++语言。
在C++语言里,类型后加&表示引用,如
int a;
int & b = a;
表示b引用a,b实际上就是a的别名。修改b的值也会导致a的值被修改。
函数传参时,加&表示把实参直接传递给函数,而不加&表示是传拷贝。
传引用:将实参直接传给形参,对于复杂点的较大的结构体或类类型,可以省去效率低的拷贝过程,但如果传的是非const引用,那么在函数内部对形参的修改将会导致实参也会被修改。
传值:将实参拷贝一份传给形参,因此对于传递大点的数据结构时效率相对较低,对形参的修改不会影响外部实参。
C语言中没有引用的概念,都是以指针处理。

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

1、值传递

void swap(int x,int y)

{ int temp = x;

x = y;

y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

}

执行后,并不会交换。

2、引用传递

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] != ''; 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);

}

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

(3)c语言传参数扩展阅读:

调用带参数的函数:

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

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

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

myFunction(argument1,argument2)。

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

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

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

按值传递参数:

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

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

按地址传递参数:

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

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

按数组传递参数:

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

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

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

参考资料来源:网络-参数传递

参考资料来源:网络-字符串



❹ 指针作为函数形参时是哪种传递方式

C语言中,函数参数传递方式为单向传递,即实参传给形参,形参和实参占用不同的内存单元。这意味着形参不能直接改变实参的值。但可以通过使用指针作为函数的形参来改变实参的值。这是因为指针可以改变其所指向的变量的值,而指针本身的值(即指针所指向的地址)不能改变。尽管指针本身是一个变量,但在函数调用中,其值不能改变,遵循单向传递规则。

要实现指针类型的参数在函数调用中改变其实参的值,可以使用二级指针。二级指针是一种指向指针的指针类型,通过它可以在函数内部修改原始指针所指向的内存单元的值。这使得指针类型的参数可以在函数调用中改变其实参的值。

理解指针在函数参数中的使用时,需要明确“指针”这个词在不同上下文中的含义。p代表地址,即一个指针变量的地址;*p代表指针所指向的变量的值;**p代表指针所指向的变量(即指针类型变量)本身。这种理解有助于清晰地表达指针的用途和功能,从而提高代码的可读性。

尽管指针可以提高程序的灵活性,但它们也可能增加代码的复杂性和可读性。因此,在使用指针作为函数参数时,应谨慎考虑其带来的影响。确保代码清晰、易于维护,是编写高质量程序的关键。

热点内容
我的世界原初修真服务器攻略 发布:2025-03-24 14:57:18 浏览:140
苹果13存储容量128 发布:2025-03-24 14:45:18 浏览:721
java软件编程 发布:2025-03-24 14:43:07 浏览:758
自己搭建智能家居服务器mqtt 发布:2025-03-24 14:42:11 浏览:154
存储卡160ms 发布:2025-03-24 14:36:32 浏览:581
ad6怎么编译 发布:2025-03-24 14:31:50 浏览:118
苹果平板游戏密码可以是多少 发布:2025-03-24 14:22:11 浏览:414
正在连接外设服务器是什么意思 发布:2025-03-24 13:40:34 浏览:334
安卓怎么模仿苹果弹窗 发布:2025-03-24 13:33:47 浏览:17
游戏官网源码 发布:2025-03-24 13:14:04 浏览:572