【发布时间】:2021-07-02 00:58:43
【问题描述】:
我了解到,为了通过调用函数来访问或修改变量的值,我们需要将指针作为参数传递,如下所示:
#include <stdio.h>
//create a function
void Increment(int* x) {
*x = *x+1;
printf("Address of variable x in increment = %p\n",x);
}
int main() {
int a;
a = 10;
Increment(&a);
printf("Address of variable 'a' in main = %p\n",&a);
printf("Value of a in main function = %d\n",a);
}
但是我又做了一个测试,发现通过调用函数并返回值,也可以达到同样的效果。
#include <stdio.h>
//create a function
int Increment(int x) { // do not use VOID
x = x+1;
printf("Address of variable x in increment = %p\n",x);
return x;
}
int main() {
int a;
a = 10;
int hasil;
hasil = Increment(a);
printf("Address of variable 'a' in main = %p\n",&a);
printf("Value of a in main function = %d\n",hasil);
}
我的问题:
1) 如果我可以使用返回值来获得相同的结果,我是否必须将指针作为参数传递?
2) 我观察到当我从返回值的函数中打印变量“x”的内存地址时,内存地址非常短 0xb ,知道为什么吗?通常地址很长。
【问题讨论】:
-
如果要修改多个变量怎么办? (他们也不做完全相同的事情——第二个版本复制了变量的值)
-
返回函数结果表示可以在表达式中使用; void 函数不能在表达式中使用。
标签: c