2013-09-24 68 views
1

愚蠢的問題,它是一個很好的方法來改變函數內的函數參數值或創建另一個變量來保存它,哪一個更好? 如:更改功能參數值在C函數內

s16 functionA(s16 sum) { 
u8 addy = 5; 
sum += addy; 
return sum; 
} 

OR

s16 functionA(s16 origin) { 
u8 addy = 5; 
s16 sum = origin + addy; 
return sum; 
} 

感謝。

回答

2

可以寫入參數,可能根據編譯器的聰明程度,甚至可以獲得更好的性能。

在另一方面,你的例子也可以寫成:和

s16 functionA(s16 sum) 
{ 
    const u8 addy = 5; /* Assuming this is more complex in reality. */ 
    return sum + addy; 
} 

有一個在分配給sum沒有點然後返回它,這兩種說法可以合併。

0

OR

s16 functionA(s16 origin) { 
    u8 addy = 5; 
    return origin + addy; 
} 
0

由於第二個不提高可讀性,我會選擇第一個。

此外,它在堆棧中節省2個字節,這在嵌入式環境中可能很好(但編譯器很可能會優化它)。