русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Передача массивов в функции

Стилистически никаких отличий при использовании в функциях массивов практически нет, хотя и есть одна интересная деталь. Рассмотрим пример функции, возвращающей сумму элементов массива.

#include <iostream>

#include <conio>

using namespace std;

const int N=5; // размер массива (глобальная константа)

int summ(int mas[N]); // Вар.II: int summ(int mas[], int N)

int main() {

int arr[N]={3, 4, 5, 4, 4}; // arr[0]=2, arr[1]=4, arr[2]=5, ...

cout << "Summa elementov massiva: " << summ(arr); // Вар.II: summ(arr, N)

getch(); return 0; }

//---------------------------------------------------------------------------

int summ(int mas[N]) { // Вар.II: int summ(int mas[], int N)

int s=0;

for(int j=0; j<N; j++) s = s + mas[j];

return s;

}

Из данного примера видно, что при вызове функции в качестве аргумента используется только имя массива summ(arr). Это имя (в нашем случае arr) в действительности представляет собой адрес массива в памяти. Использование адресов для массивов-аргументов похоже на использование аргумента ссылки, при котором значения элементов массива не копируются в функцию. Вместо этого функция работает с оригинальным массивом, хотя ссылается на него используя другое имя. Такой механизм используется для массивов, потому что они могут быть очень большими и дублирование массива в каждую функцию отнимало бы много времени и пространства памяти.

Таким образом, массив всегда передаётся по адресу. При передаче по адресу в стек заносятся копии адресов аргументов, а функция осуществляет доступ к ячейкам памяти по этим адресам и может изменить исходные значения аргументов. Однако, необходимо понимать, что адрес – это не то же самое, что ссылка.

Лекция 7(9 стр.)

Просмотров: 447


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.