делает p1
p2
var
дополнительным потреблением памяти?
Возможно, эти переменные будут оптимизированы вашим компилятором, особенно если они установленытолько один раз и читайте только один раз, но язык Си никоим образом не обещает этого.
Более того, поскольку @TomKarzes замечает в комментариях, это также требует, чтобы компилятор мог доказать, что две формы находятся вФактический эквивалент.Это не будет проблемой только для func2()
, но с фактической последовательностью вычислений и вызовов функций, представленных в вопросе, возможно, что вычисление и сохранение значений для p2
и var
перед вызовом func2()
может привести крезультаты, отличающиеся от тех, которые выполнялись бы после выполнения тех же вычислений и передачи результатов непосредственно в func3()
.
Таким образом, переменные очень хорошо могли бы занимать место в стеке, пока функция не вернется.Если вы уверены, что эти две формы эквивалентны для ваших целей, то вы можете убедиться, что переменные не занимают места, используя первую форму вашей функции, вместо того, чтобы оставлять решение своему компилятору.