在C语言中,函数参数的传输主要通过以下两种方式:
(图片来源网络,侵删)
1、值传递(Pass by Value)
2、地址传递(Pass by Address)
1. 值传递(Pass by Value)
值传递是指将实际参数的值传递给形式参数,在这种情况下,形式参数和实际参数占用不同的内存空间,当函数被调用时,实际参数的值被复制到形式参数所在的内存空间,函数内部对形式参数的修改不会影响到实际参数。
示例代码
#include <stdio.h>
void func(int a) {
a = 10;
}
int main() {
int x = 5;
printf("Before calling func: x = %d
", x);
func(x);
printf("After calling func: x = %d
", x);
return 0;
}
输出结果:
Before calling func: x = 5
After calling func: x = 5
从输出结果可以看出,尽管在func
函数内部修改了形式参数a
的值,但实际参数x
的值并未受到影响。
2. 地址传递(Pass by Address)
地址传递是指将实际参数的地址传递给形式参数,在这种情况下,形式参数和实际参数指向同一块内存空间,当函数被调用时,实际参数的地址被复制到形式参数所在的内存空间,函数内部对形式参数的修改会影响到实际参数。
示例代码
#include <stdio.h>
void func(int *a) {
*a = 10;
}
int main() {
int x = 5;
printf("Before calling func: x = %d
", x);
func(&x);
printf("After calling func: x = %d
", x);
return 0;
}
输出结果:
Before calling func: x = 5
After calling func: x = 10
从输出结果可以看出,在func
函数内部修改了形式参数a
所指向的内存空间的值,实际参数x
的值也受到了影响。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)