#include<stdio.h> void add1(float a,float b) { printf("函数中&a=%p,&b=%p\n",&a,&b); a += (float)10; b += (float)10; printf("函数中a=%f,b=%f\n", a, b); } int main() { float a = 1.1, b = 2.2; printf("调用add1()函数前&a=%p,&b=%p\n",&a,&b); add1(a,b); printf("调用add1()函数后&a=%p,&b=%p\n",&a,&b); printf("a=%f,b=%f\n",a,b); return 0; };该程序中,为什么在执行完函数add1后,a,b的值不变
时间: 2024-03-28 21:37:44 浏览: 77
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
在这个程序中,`add1`函数中的参数`a`和`b`是通过值传递的方式传入的,也就是说,当`add1`函数被调用时,会将`main`函数中的`a`和`b`的值复制到`add1`函数的局部变量`a`和`b`中。因此,`add1`函数中的操作只会修改`a`和`b`的副本,而不会修改`main`函数中的`a`和`b`变量的值。
在`add1`函数中,我们使用`&`运算符获取了`a`和`b`的地址,并对它们进行了加上10的操作。但是这些操作只是修改了`add1`函数中的局部变量`a`和`b`,而不会影响`main`函数中的`a`和`b`变量的值。
因此,当`add1`函数执行完毕后,`main`函数中的`a`和`b`的值并没有发生改变,仍然是原来的值。
阅读全文