Указатель - результат функции
Функция в качестве результата может возвращать указатель. В этом случае она обычно "выбирает" некоторую переменную из имеющихся или же "создает" ее (см.5.1). В следующем простом примере функция возвращает указатель на минимальный элемент массива, переданного в виде формального параметра:
// Результат функции - указатель на целое
int *min(int A[], int n)
{
int *pmin, i; // Рабочий указатель, содержащий результат
for (i=1, pmin=A; i<n; i++)
if (A[i] < *pmin) pmin = &A[i];
return(pmin); // В операторе return - значение указателя
}
void main() // Записать 0 на место
{ *min(B,10) = 0; } // минимального элемента массива
Прежде всего обратим внимание на синтаксис. Заголовок функции написан таким образом, как будто имя функции является указателем на int . Этим способом и обозначается, что ее результат -указатель. Оператор return возвращает значение переменной-указателя pmin , то есть адрес. Вообще в нем может стоять любое выражение, значение которого является указателем, например:
return &A[k];
return pmin+i;
return A+K;
Указатель - результат функции может ссылаться не только на отдельную переменную, но и на массив. В этом смысле он не отличается ничем от других указателей.