Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Передача массивов в функции.Содержание книги
Поиск на нашем сайте
Чтобы передать массив в качестве аргумента в функцию, указывается имя массива без каких-либо квадратных скобок, часто передаётся в качестве параметра размерность массива, чтобы функция могла обработать заданное число элементов в массиве. Имя массива является адресом первого элемента массива в памяти, поэтому когда вызываемая функция модифицирует элементы массива в теле функции, она модифицирует реальные элементы массива в их истинных ячейках памяти. Если массив объявлен следующим образом: int ara[24];, то modifyArray(ara, 24); //вызов функции и передача имени и размерности массива; void modifyArray(int b[ ], int n) // заголовок функции void modifyArray(int [ ], int); //прототип функции Рассмотрим пример передачи массива в качестве параметра функции, модифицирующей его: #include <iostream.h> #include<iomanip.h> void modifyArray(int[ ],int); //прототип функции void main() { const int arraySize=5; int i, a[arraySize]={0,1,2,3,4}; cout<<”Печать массива”<<endl; for(i=0; i<arraySize; i++) cout<<setw(3)<<a[i]; cout<<endl; modifyArray(a, arraySize); // вызов функции cout<<”Значения изменённого массива”<<endl; for(i=0; i<arraySize; i++) cout<<setw(3)<<a[i]; cout<<endl; return 0; } void modifyArray(int b[ ], int n) // заголовок функции { for (int j=0; j<n; j++) b[j]*=2; return 0; } В программах возможна ситуация, когда функции нельзя позволять модифицировать элементы массива. Для этой цели С++ имеет спецификатор типа const для предотвращения изменения значений в массиве. В этом случае элементы массива в теле функции становятся постоянными, и попытки изменить их приводят к ошибке при трансляции. Пример: В нижеприведённой программе с помощью функций производится заполнение массива случайными числами, печать и сортировеа массива. #define MAX 10 #include <iostream.h> #include<time.h> #include<stdlib.h>
//прототипы функций void fill_array(int ara[]); // заполнение массива случайными числами void print_array(int ara[]); // печать массива void sort_array(int ara[]); // сортировка массива
void main() { int ara[MAX]; fill_array(ara); cout<<"печать массива"<<endl; print_array(ara); sort_array(ara); cout<<"печать отсортированного массива"<<endl; print_array(ara); } // описание функций void fill_array(int ara[MAX]) { int ctr; randomize(); for (ctr=0; ctr<MAX; ctr++) ara[ctr]=(rand()%100); return; } void print_array(int ara[MAX]) //вывод массива { int ctr; for (ctr=0; ctr<MAX; ctr++) cout<<ara[ctr]<<" "; cout<<"\n"; return; } void sort_array(int ara[MAX]) { int temp; int ctr1,ctr2; for (ctr1=0; ctr1<MAX-1; ctr1++) for (ctr2=ctr1+1; ctr2<MAX; ctr2++) if (ara[ctr1]>ara[ctr2]) { // ara[ctr1]=ara[ctr1]^ara[ctr2]; //ara[ctr2]=ara[ctr1]^ara[ctr2]; //ara[ctr1]=ara[ctr1]^ara[ctr2]; ara[ctr1]^=ara[ctr2]^=ara[ctr1]^=ara[ctr2]; return 0; } /* {temp=ara[ctr1]; ara[ctr1]=ara[ctr2]; ara[ctr2]=temp; }*/ return 0; } Передача по адресу данных - не массивов. Иногда оказывается полезным передать по адресу параметры, но при этом надо помнить, что вызываемая функция может изменить значения переменных. Для передачи по адресу данных, не являющихся массивами нужно сделать следующее: 1. перед переменной в вызывающей функции поставить символ амперсант (&); 2. перед каждым использованием переменной в принимающей функции поставить символ звёздочка (*). Рассмотрим пример передачи данных из main() в другую функцию. #include <iostream.h> void do_fun(int *amt); //прототип функции void main() { int amt; amt=100; cout<<”В main amt=”<<amt<<”\n”; do_fun(&amt); // вызов функции, & означает, что передача по адресу cout<<”После возврата amt =”<<amt; return0; } void do_fun(int *amt) // описание функции { *amt=85; cout<<”Внутри функции do_fun amt=”<<*amt<<”\n”; return 0; } В результате получим следующие строки: В main() amt=100 Внутри функции do_fun() amt=85 После возврата amt=85
|
||||
Последнее изменение этой страницы: 2016-12-12; просмотров: 158; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.155.163 (0.006 с.) |