請教一個小問題
#include <stdio.h>
int getGirth(int a,int b,int c)
{
??? if( (a+b)<=c || (a+c)<=b || (b+c)<=a )?? //判斷是否為三角形
??? {
??????? printf("不構成三角形\n");
??????? return 0;???????????????????????????????
??? }
??? else
??? {
????? int cirf = a+b+c;???? //計算三角形周長
????? return cirf;
??? }
??????
}
int main()
{
??? /* 定義三角形三邊長 */
??? int a, b, c;
??? a = 3;
??? b = 4;
??? c = 5;
??? printf("三角形的周長是:%d\n", getGirth());? //調用周長函數
??? return 0;
}
用這樣的代碼的時候? 出來的結果為什么會是 “三角形的周長是:4195712?”呢
2017-01-18
printf("三角形的周長是:%d\n",getGirth());這一句里面的調用函數“getGirth()”添加參數a,b,c.即是getGirth(a,b,c),再次運行就可以得出結果了。這是因為getGirth()里面的參數是形參,它只在函數內部有效,函數調用結束返回主函數后則不能再使用該形參變量(這句話是重點)而主函數main()里面的參數是實參,實參在進行調用時必須具有確定的值,故有a=3;b=4;c=5;這些賦值,以便把這些值傳給形參,因此應該用賦值的方法是實參獲得確定的值。希望對你有幫助。