Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Выходные данные. Поскольку в языках Cи C++ реализована передача аргументов по значению, то для того, чтобы в вызываемой процедуре можно было изменять значение исходного



C

Поскольку в языках C и C++ реализована передача аргументов по значению, то для того, чтобы в вызываемой процедуре можно было изменять значение исходного аргумента, туда необходимо передавать адрес области памяти, где хранится аргумент. При этом функция не может изменить этот адрес, а содержание может. Для получения адреса используется оператор &. Следовательно, соответствующий параметр – указатель!!

Пример. Дана матрица {aij}, i,j=1...10. Найти max{aij} и его индексы.

float maxmatr(float a[10][10], int * k, int * l){

float max;

int i, j;

max = a[0][0];

for (*k=*l=i=0; i<10; i++){

for (j=0; j<10; j++){

if (max<a[ i ][ j ]){max=a[ i ][ j ]; *k=i; *l=j; }

}

}

return max;

}/* End maxmatr */

Соответствующий фрагмент вызывающей процедуры имеет вид:

float maxmatr(float a[ ][10], int *, int*), // Прототип

maxim, // Максимальный элемент

a[10][10]; // Исходная матрица

int m, n; // Ее размеры

..................................

maxim=maxmatr(a, & m, & n);

Употребление конструкции float a[ ][10] будет пояснено ниже.

Те же вычисления можно реализовать в виде подпрограммы.

void maxmatr(float a[10][10], int *k, int * l, float * max){

float * max;

......................

Также везде надо заменить max на *max и убрать инструкцию return.

Пример.

Функция scanf: список данных – это выходные аргументы, поэтому при обращении надо использовать адреса (&), printf: список данных – входные аргументы, поэтому используются значения.

Basic

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






Дата публикования: 2014-11-02; Прочитано: 323 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...