У вас вопросы?
У нас ответы:) SamZan.net

массивы и параметрыструктуры Массив не передается по значению а передается указатель на его первый элеме

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.3.2025

12 Параметры-массивы и параметры-структуры

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

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

voidcompute1(int* vec_ptr, intvec_size);    // одинспособ

structTvector    // другой способ с помощью структуры

{  int* ptr;  // указатель на целочисленный массив

int size; // размермассива

};

void compute2(vec v);

Для многомерных массивов можно вместо них использовать векторы указателей, которые не требуют специального рассмотрения. Например:

char* day[] = { "mon", "tue", "wed", "thu", "fri", "sat", "sun" };

При использовании в качестве параметров функций переменных-структур возможно следующее:

1) использование для передачи данных по значению;

2) использовать для передачи данных по ссылке.

При передаче данных по ссылке внутри тела функции используется указатель на структуру. Доступ к данным полей структуры выполняется с помощью оператора «стрелка» (->). Который автоматически выполняет операцию разыменовывания. Формат:

имя_указателя_на_структуру->имя_поля

Пример использования параметра-структуры для функции чтения полей с клавиатуры и передачи их в программу.

intentry(structsman* man)     // Определение функции ввода данных структуры

{ cout<< "\nИмяклиента          : ";

cin>> man->name;

cout<< "\nОтчество клиента     : ";

cin>>man->name2;

cout<< "\nФамилияклиента      : ";

cin>> man->family;

cout<< "\nГодрожденияклиента : ";

cin>>man->year;

cout<< "\nНомерсчетаклиента  : ";

cin>>man->number;

return 0;      // Код успешного окончания процесса

} // ---------------------------------------

При передаче параметров-структур по значению рекомендуется указывать описание параметра struct в формате

structимя_типа_структурыпеременная_структур




1. Культурное строительство в СССР в 20-30 годы1
2. Пластмассы, сталь, сплавы.html
3. Теория организационных структур.html
4. эконом в основном предпринимательские интересы личности общества и государства
5. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата педагогічних наук8
6. включены в жизнь своей общины и общества в целом
7. Сальвадор Дали - феномен ХХ века
8. записка справка заключение
9. 80 Плановая гигиеническая ванна проводится в отделении ежедневно через день 1 раз в не.
10. Секвенирование дезоксирибонуклеиновой кислоты (ДНК)