int 變量的默認初始值為0
這可以寫個小程序測試下:
#include <stdio.h> int main() { int i; if (i == 0) { printf("Hola, mundo, i = %d\n", i); } return 0; }
運行結果為:
Hola, mundo, i = 0
可見int i雖求對i賦值,但是默認值為0;
同理下面的問題,就迎刃而解了:
#include <stdio.h> void func(int a, int b, int c) { c = a * b; } int main() { int c; func(2,3,c); printf("c = %d\n", c); return 0; }
運行結果卻為0。
如果真想得到6,有兩種解決方法,
一是添加return 語句,代碼如下:
#include <stdio.h> int func(int a, int b, int c) //void 改為int,因為需要return value了 { c = a * b; return c; //添加return語句 } int main() { int c; printf("c = %d\n", func(2,3,c)); //func移動printf里面來 return 0; }
或者更簡潔點:
#include <stdio.h> int func(int a, int b) { int c = a * b; return c; } int main() { printf("c = %d\n", func(2,3)); return 0; }
二是引入指針變量(本題的原意)
#include <stdio.h> void func(int a, int b, int* c) //這里定義指針變量c,將c指向main函數中int c的地址 { *c = a * b; } int main() { int c; func(2,3,&c); //把int c的地址交給func函數中的指針變量c printf("c = %d\n", c); return 0; }