Информатика и технология программирования

       

Указатель на структуру -результат функции


Указатель на структурированную переменную может быть также и результатом функции. В этом случае в операторе return должен быть указатель (адрес) некоторой структурированной переменной, которая будет доступна через него после завершения функции. Чисто технически это не составляет проблем. Но попутно возникает вопрос: а откуда берется эта переменная. Для ответа на него перечислим возможные " источники" :



-переменная не может быть локальной (автоматической) переменной функции, поскольку они уничтожается после выхода из функции;



-функция может возвращать указатель на любую общедоступную глобальную (внешнюю) переменную;



-функция может возвращать указатель на переменную, которая в свою очередь получена функцией через указатель на переменную или массив (то есть передавать переменную " со входа на выход" );



-функция может возвращать указатель на динамическую переменную, создаваемую в процессе работы функции.

В данном примере функция выбирает из массива структурированных переменных и возвращает указатель на переменную, у которой элемент name содержит пустую строку :


man *find(man *p, int n)
{
int i;
for (i=0; i&#60n; i++)
if (p[i].name[0]=='\0')
return(&#38p[i]); // или return(p+i);


return(NULL);
}



Содержание раздела