![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 164; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.67.169 (0.009 с.) |