Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
part1.doc
Скачиваний:
2
Добавлен:
14.04.2019
Размер:
337.41 Кб
Скачать

Способы передачи параметров

В Си принят единый способ передачи параметров, который называется ПЕРЕДАЧЕЙ ПО ЗНАЧЕНИЮ. Выглядит он так:

- формальные параметры являются собственными переменными функции;

- при вызове функции происходит присваивание значений фактических параметров формальным (копирование первых во вторые);

- при изменении формальных параметров значения соответствующих им фактических параметров не меняются.

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

приводит к изменению значений массива - фактического параметра функции:

int SUMMA(int s[], int n) //Сумма элементов массива. Размерность передается

{ // отдельным параметром.

int i, z;

for (i = 0, z = 0; i<n; i++) z + = s[i];

return(z);

}

void main()

{

int c[] = {1,6,4,7,3,56,43,7,55,33};

printf (“Сумма элементов массива = %d”, SUMMA (c,10)) ;

}

Функция main()

В каждой программе должна присутствовать функция main() {...}, которая автоматически вызывается при загрузке программы в память и её выполнении. Более никаких особенностей, кроме указанных, эта функция не имеет.

Программа в целом представляет собой просто набор функций (с обязательной функцией main()), имеющих каждая собственный набор локальных переменных. Кроме этого в ее состав включаются еще переменные, доступные сразу нескольким функциям. Такие переменные называются ГЛОБАЛЬНЫМИ (в Си - ВНЕШНИМИ). Будучи определенными в любом месте программы вне тела функции, они становятся доступными любой функции, следующей за ней по тексту программы:

int B[10];

¦int sum()

¦{ ...B[i]... }

¦ int n;

¦ ¦void nf()

¦ ¦{...B[i]...n...}

¦ ¦

¦ ¦ char c[80];

¦ ¦ ¦ void main()

¦ ¦ ¦ {...B[i]...n...c[k]...}

Области действия переменных B, n, c

Глобальные (внешние) переменные являются наиболее "стабильными" данными в программе. Транслятор переводит их во внутреннее представление, в котором им соответствуют определенные адреса выделенной памяти. Можно сказать, что эти переменные находятся в программе (программном файле) еще до загрузки ее в память. Поэтому их можно инициализировать.

ИНИЦИАЛИЗАЦИЯ - присваивание переменным во время трансляции начальных значений, которые сохраняются во внутреннем представлении программы и устанавливаются при загрузке программы в память перед началом ее работы. Инициализация включается в синтаксис определения переменной:

int a=5, B[10]= {1,5,4,2}, C[]={ 0,1,2,3,4,5 };

Инициализатор отделяется от переменной в ее определении знаком "=".

Для простой переменной - это обычная константа, для массива - список констант, заключенных в фигурные скобки и разделенных запятыми. Заметим, что размерность массива может отсутствовать, если транслятор в состоянии определить ее из инициализирующего списка. Если явная инициализация глобальных переменных отсутствует, то они автоматически инициализируются НУЛЕВЫМИ ЗНАЧЕНИЯМИ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]