Почему в функции есть «статическое» определение? - PullRequest
0 голосов
/ 12 января 2011

Рассматривая пример на http://c -faq.com / misc / hexio.html , что является причиной наличия дополнительного указателя на «статический» буфер символов?Почему мы не можем сойти с рук retbuf?

Ответы [ 2 ]

3 голосов
/ 12 января 2011

Без ключевого слова static буфер будет выделен в стеке и освобожден к моменту возврата функции к вызывающей стороне.

Использование static гарантирует, что буфер действителен после функциивозвращается.

0 голосов
/ 12 января 2011

Вам нужен указатель, чтобы вы могли сохранить изменяющийся адрес.Если бы у вас было только retbuf, вам нужно было бы спроектировать функцию для использования изменяющейся индексной переменной.Например:

int ind = sizeof(retbuf)-1;
retbuf[ind] = '\0';

и т. Д.

Обратите внимание, что массивы не являются указателями.Массив - это область памяти фиксированного размера.Указатель - это адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...