Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Языки программирования.docx
Скачиваний:
36
Добавлен:
17.03.2015
Размер:
50.42 Кб
Скачать

Указатели многомерных массивов.

Наиболее часто в программах используется многомерный массив. Для получения адреса элемента находящегося в строке с индексом Iи в столбце с индексомjнеобходимо сделать следующее: &a[i][j].

В общем случае вычисление смещения элементов массива, объявленного как a[m][n]n*i+j.

Использование указателей вместо двумерного массива.

Свободные массивы.

Термин свободный относится к двумерным массивам. Это массивы, в котором длины строк могут быть различными. Для организации свободного массива используются массивы указателей. Int*a[100] память для строк не выделена.

Функции.

Описание заголовка называют

Если функция определена до тела программы, то ее объявление может отсутствовать.

Функция объявляется следующим образом: тип имя функции (тип и имя параметра, тип и имя 2ого параметра).

Тип функции определяет тип значения, которое возвращает функция. Пример объявления:

Int somefunc(int a, float b);

Определение функции.

(тип и имя параметра, тип и имя 2ого параметра){

Тело функции

}

Передача значений из вызванной функции происходит с помощью оператора возврата (return)

Пример:

Int f(int a, int b)

{

If (a>b){

Pritnf(“max=%d”, a);

Return a;

}

Pritnf(“max=%d”, b);

Return b;

}

Способ вызова этой функции может быть такой: c=f(5,15);

C=f(d,g)

F(d,g)

В языке C++ можно задавать значение аргументов функции, которые будут использоваться по умолчанию, т.е. если программист не введет свое значение, например,

Void some f(int a=1, int b=2, int c=3){

Printf(“a=%d, b=%d, c=%d”, a,b,c);

}

Int main(void){

Some f();

Some f(10);

Sone f(10,20);

Some f(10,20,30);

Return 0;

}

Выведет так:

A=1 b=2 c=3

A=10 b=2 c=3

A=10b=20c=3

A=10b=20c=30

В языке C++ аргументы функции передаются по значению, т.е. вызванная функция получает временную копию каждого аргумента, а не его адрес. Например:

Void some_f(int a)

{

A=5;

}

Main(void){

Int A=3;

Some_f(A);

Pritnf(“A=%d”,A);

}

Void swap(int *a, int *b)

{ int *tmp=*a;

*a=*b;

*b=*tmp;

}

Данная функция должна вызываться следующим образом: swap(&b,&c);

Если же в качестве аргумента функции используется имя массива, то передается только адрес начала массива, а сами элементы не копируются. Функция может изменять элементы массива, сдвигаясь от его начала.

Передача массива в виде параметра.

3 способа:

  1. Параметр задается как массив: swap(inta[])

  2. Передать адрес просто первого массива: swap(int*a)

Если некоторые переменные – константы, массивы, структуры, объявлены как глобальные, то их не надо включать в список параметров функции

Классы памяти.

Внешние глобальные переменные определены вне функций и, следовательно, доступны любой из них. Область действия внешних переменных простирается от точки во входном файле, где она объявлена, до конца файла. Чтобы использовать переменную в разных файлах программы, она должна быть объявлена как extern.

Автоматические переменные по отношению к функции являются внутренними или локальными. Они начинают существовать при входе в функцию и уничтожаются при выходе из нее.

Статические переменные объявляются статическим словом static, они могут быть внутренними локальными или внешними локальными. Внутренние переменные также локальны по отношению к функции, однако они продолжают существовать даже после завершения работы функции.