在函数调用的时候,我们都会碰到传递这个概念,但是有两种情况的传递,一种是数值传递,一种是地址传递,我们在选择的时候又该如何选择呢。这个要根据我们具体的目的来选择。
- 数值传递
#include<stdio.h>
int funtion(int y);
int main()
{
int x = 1;
funtion(x);
printf("x的值没有发生变化:x = %d\n",x);//修改y的值后,x的值没有发生变化
return 0;
}
int funtion(int y)
{
printf("y = %d\n",y);//x传递给y的值
y = 2;
printf("改y的值后:y = %d\n",y);//修改y的值后
}
如果我们需要计算或处理值,那么使用数值传递形式的函数调用,因为我们不需要改变主调函数变量的值,即我们不修改主调函数中x的值,可以直接选择数值传递
- 地址传递
#include<stdio.h>
int funtion(int* y);
int main()
{
int x = 1;
funtion(&x);
printf("x = %d\n",x);
return 0;
}
int funtion(int* y)
{
*y = 2;
return *y;
}
如果我们需要在被调函数中改变主调函数的变量,即修改x的值,则使用地址传递形式的函数调用
可以看到x的值被修改成2了,所以以后我们可以根据自己的需求,是否需要修改主调函数变量的值来选择按值传递还是按地址传递
这是C primer plus 第六版本 pdf ,大家有需要的可以去下载,https://xbp.pub/i/ZZ0fb1cc4foMq 还有perl,python,数据分析等一些技能书籍,大家有需要的可以去看看