C语言函数参数的传值和传址调用

2017-11-15 10:48:02来源:http://greedyhao.cc/2017/11/14/工作-c-language-2017-11-14-C语言函作者:Zhuhao's Blog人点击

分享

大家都知道,c语言一般的参数都是传值调用的,但有时候也有例外,下面就分析一下什么时候传值调用,什么时候传址调用。


传值调用

标量参数都是传值调用,不会对标量产生任何影响


#include<stdio.h>
void add_one(int value){
value += 1;
}
int main(int argc, char const *argv[]){
int value = 10;
printf("传值前value=%d/n", value);
add_one(value);
printf("传值后value=%d/n", value);
return 0;
}

运行结果:


传值前value=10
传值后value=10
Process returned 0 (0x0) execution time : 0.110 s
Press any key to continue.
传址调用

数组和指针参数是传址调用,相当于传递了一个包含参数地址的指针,在函数中对数组或指针的任何操作会间接的改变数组和指针的本身


#include<stdio.h>
#defineSIZE 4
void clr_nums(int nums[], int size){
int i;
for (i = 0; i < size; i++) {
nums[i] = 0;
}
}
void clr_string(int *string){
*string = " ";
}
int main(int argc, char const *argv[]){
int nums[] = {1,2,3,4};
int *string = "Hello";
int i;
printf("传址前/n");
printf("nums= ");
for (i = 0; i < SIZE; i++) {
printf("%d ", nums[i]);
}
printf("string=%s/n", string);
clr_nums(nums, SIZE);
clr_string(&string);
printf("传址后/n");
printf("nums= ");
for (i = 0; i < SIZE; i++) {
printf("%d ", nums[i]);
}
printf("string=%s/n", string);
return 0;
}

运行结果:


传址前
nums= 1 2 3 4 string=Hello
传址后
nums= 0 0 0 0 string=
Process returned 0 (0x0) execution time : 0.111 s
Press any key to continue.


最后更新时间:



下方的留言框比较调皮,有时候故意不出来,而且还是滚刀肉,实在拿他没办法,所以如果等得不爽可以直接去issues
给我留言



最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台