我瞭解,爲了通過調用一個函數來訪問或修改變量的值,我們需要傳遞指針作爲參數,如下面:返回值或傳遞指針作爲參數?
#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,任何想法,爲什麼?通常地址很長。
如果您想修改多個變量,該怎麼辦? (他們也不完全一樣 - 第二個版本複製變量的值) – UnholySheep
返回函數結果意味着您可以在表達式中使用它;表達式中不能使用void函數。 –