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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 28.4.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. Верхнеуслонская гимназия Да здравствует страна Спортландия
2. Д Машков НВ Теремцова Проблеми теорії та філософії права РОБОЧА НАВЧАЛЬНА ПРОГРАМА д
3. Сопоставительный анализ переводов сказки А Милна Вини-Пух
4. Речовина що збільшує швидкість хімічних реакцій якісно або кількісно при цьому не змінюється
5. Вологда ~ новогодняя столица России 2014 в период с 28 декабря 2013 года по 08 января 2014 года
6. Мировая экономика.html
7. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата хімічних наук КИЇВ ~7 Дисер
8. Роль и место службы управления персоналом в общей организационной структуре
9. Устранение слабых сторон заводского технологического процесса
10. Внешнеторговая деятельность фирмы- основные особенности