Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
П_5_6.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.37 Mб
Скачать

А) Функция возвращает указатель на скаляр

Это означает, что функция возвращает адрес скаляра. Рассмотрим это на примере.

Пример: определить и вызвать функцию поиска числа в произвольном целочисленном массиве. Функция возвращает адрес числа или NULL, если такого значения в массиве нет. Тип возвращаемого результата – это тип указателя на элемент массива.

int * poisk ( int*c, int m, int n )

/* параметры:

c – указатель на элемент массив для передачи адреса

первого элемента массива,

m – общее количество элементов массива,

n – искомое число;

функция возвращает значение указателя на искомый элемент массива*/

{ int i, j

for ( i =0 ; i < m ; i++ )

{ if ( *c = = n ) // cадрес элемента, *cзначение элемента ;

return ( c ) ; // если значение *c совпало с числом n,

c++; // функция завершается и возвращает в точку

// вызова адрес данного элемента, в противном случае –

// увеличиваем значение указателя на величину sizeof( int),

// используя операцию инкремента (++), при этом указатель c

// приобретает значение адреса следующего элемент массива;

}

return (NULL); //если просмотрев все элементы, ни один элемент не

// совпал с n, функция возвращает NULL;

}

void main ( )

{ int a[2][4] = {22.4, 1.2, …} , //определены двумерный

int c[6] = {3.14, 1.4,…} ; // и одномерный массивы с инициализацией;

int*p, i, j;

// Поиск числа 7 в двумерном массиве:

p= poisk ( *a, 8 ,7 ); // результат вызова функции присваивается

// указателю p типа (int*); при вызове передаются

//фактические параметры:

//1 - адрес первого элемента в двумерном массиве –

//это единожды разыменованное имя массива *a,

//2 - общее количество элементов: 2х4 = 8;

//3 - число, которое ищем: 7 ;

if (p== NULL) cout << “ число в матрице отсутствует”;

else { // p -*a - это количество элементов в массиве до числа 7;

cout<< “Номер строки элемента i = ” << (i= (p - *a ) / 4) ;

// здесь используется операция целочисленного деления для

// определения количества заполненных строк;

cout<< “Номер столбца элемента j = ” << ( j = p - *ai * 4) ;

};

//Поиск числа 7 в одномерном массиве:

p = poisk ( c,6,7);

// адрес первого элемента в одномерном массиве – это имя массива c;

if ( p = = NULL) cout << “ число отсутствует”;

else cout<< “Номер индекса элемента i = ” << (i= pc );

}