Я стряхиваю свои навыки C, работая над некоторыми моими библиотеками C. Собрав первую рабочую реализацию, я теперь просматриваю код, чтобы сделать его более эффективным. В настоящее время я занимаюсь передачей параметров функции по ссылке или значению.
Мой вопрос: зачем мне передавать какой-либо параметр функции по значению в C? Код может выглядеть чище, но не будет ли он всегда менее эффективным, чем передача по ссылке?
int get_int(); void process_int_A(const int x); void process_int_B(const int* const x);
. Сравните:void foo(){ process_int_A(get_int()); }
иvoid foo(){ const int result = get_int(); process_int_A(&result); }
. Требование явного промежуточного хранилища для каждого возвращаемого значения было бы убийцей. Это меньше проблема в C++, где у вас есть реальные ссылки, которые могут прекрасно привязываться к временным значениям. - person GManNickG   schedule 04.01.2013