auto按引用传递举例c++
时间: 2024-01-04 13:40:04 浏览: 61
当我们在C语言中使用auto变量时,它会根据初始化的表达式来推断变量的类型。然而,在C语言中,auto变量默认是按值传递的,而不是按引用传递。
下面是一个简单的例子来说明这个问题:
```c
#include <stdio.h>
void modifyValue(int val) {
val = 10;
}
void modifyReference(int* ref) {
*ref = 10;
}
int main() {
auto int num1 = 5;
auto int* num2 = &num1;
printf("Before modification: num1 = %d\n", num1);
modifyValue(num1);
printf("After value modification: num1 = %d\n", num1);
printf("Before modification: *num2 = %d\n", *num2);
modifyReference(num2);
printf("After reference modification: *num2 = %d\n", *num2);
return 0;
}
```
在上面的例子中,我们定义了一个auto变量`num1`和一个auto指针变量`num2`。然后,我们调用了两个函数`modifyValue`和`modifyReference`来修改这些变量。
`modifyValue`函数按值传递了`num1`,因此在函数内部对`val`的修改不会影响到原始的`num1`。所以,即使在函数内部将`val`设置为10,最终输出的`num1`仍然是5。
相反,`modifyReference`函数按引用传递了`num2`,通过指针访问变量的值并进行修改。因此,在函数内部通过修改`*ref`的值将`num2`指向的内存中的值设置为10。所以,最终输出的`*num2`是10。
这个例子展示了C语言中auto变量的按值传递特性,以及如何通过指针实现按引用传递。
阅读全文