c语言值传递 地址传递习题
时间: 2023-12-07 22:01:33 浏览: 61
C语言中的值传递和地址传递是指在函数调用时传递参数的两种方式,值传递是将参数的值复制一份传递给函数,而地址传递是将参数的内存地址传递给函数。下面是两个习题来帮助理解值传递和地址传递的概念。
习题一:值传递
```c
#include <stdio.h>
void changeValue(int x) {
x = 10;
}
int main() {
int num = 5;
printf("调用changeValue之前,num的值为:%d\n", num);
changeValue(num);
printf("调用changeValue之后,num的值为:%d\n", num);
return 0;
}
```
在这个例子中,我们定义了一个函数changeValue,它接收一个整型参数x并将其值设为10。在main函数中,我们定义了一个整型变量num并给它赋值为5,然后打印出num的值。接着调用changeValue函数,并再次打印出num的值。运行程序后会发现,调用changeValue函数之后,num的值并没有改变,这就是因为在值传递中,参数的值是被复制一份传递给函数的,函数内对参数的修改不会影响原始变量的值。
习题二:地址传递
```c
#include <stdio.h>
void changeValue(int *x) {
*x = 10;
}
int main() {
int num = 5;
printf("调用changeValue之前,num的值为:%d\n", num);
changeValue(&num);
printf("调用changeValue之后,num的值为:%d\n", num);
return 0;
}
```
在这个例子中,我们定义了一个函数changeValue,它接收一个整型指针参数x并将其指向的值设为10。在main函数中,我们定义了一个整型变量num并给它赋值为5,然后打印出num的值。接着调用changeValue函数,并再次打印出num的值。运行程序后会发现,调用changeValue函数之后,num的值被改为了10,这是因为使用地址传递时,函数内对参数的修改会影响原始变量的值。
通过以上两个习题,我们可以更好地理解C语言中的值传递和地址传递的区别和作用。