Изменить значение параметра функции внутри функции в C

Глупый вопрос, это хороший способ изменить значение параметра функции внутри функции или создать другую переменную для ее хранения, какая из них лучше? например:

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

ИЛИ ЖЕ

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

Благодарю.

3 ответа

Это нормально для записи в параметр, и может быть даже лучше с точки зрения производительности в зависимости от того, насколько умен компилятор.

С другой стороны, ваш пример также может быть записан как:

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

Нет смысла присваивать sum и затем возвращая его, эти два утверждения могут быть объединены.

ИЛИ ЖЕ

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

Поскольку второй не улучшает читаемость, я бы выбрал первый.

Более того, он экономит 2 байта в стеке, что может быть хорошо во встроенной среде (но вполне вероятно, что компилятор его оптимизирует).

Другие вопросы по тегам