русс | укр

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

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

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

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


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

Параметры функции

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

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

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

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

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

Пример 7

void increment(int a, int *c)

{

a++;

(*c)++;

printf("%d %d ",a,*c);

}

void main(void)

{

int i=2,k=8;

increment(i,&k);

printf("%d %d",i,k);

}

На экране будет напечатано: 3 9 2 9

Пример 8

int abs_sum(int a, int b, int modul(int))

{

return modul(a)+modul(b);

}

int absolute(int x)

{

return x>=0?x:-x;

}

void main(void)

{

printf("%d ",abs_sum(-2,5,absolute));

}

На экране будет напечатано: 7

Параметры и возвращаемое значение функции main()

Функция main() может иметь или не иметь параметры и возвращать или не возвращать значение. Если она не имеет параметров или не возвращает значение, то в соответствующем поле указывается слово void.

Функция main() может иметь параметры, фактические значения которых могут быть переданы ей из командной строки или из другой программы при запуске программы на выполнение. В языке C имеются два встроенных параметра функции main(): int argc и char *argv[]. Использование именно таких идентификаторов не обязательно, но обязателен тип и порядок параметров. Эти параметры используются для передачи параметров командной строки. Параметр argc содержит количество параметров командной строки и имеет тип int. Он всегда не меньше единицы, так как имя программы, вызываемой для выполнения, трактуется как первый параметр командной строки. Параметр argv является указателем на массив строк. Каждый элемент массива содержит соответствующий параметр командной строки, один параметр командной строки отделяется от другого пробелом. Если в качестве параметра необходимо иметь строку, содержащую пробел, её необходимо заключить в кавычки. Если параметром командной строки является число, то оно рассматривается как строка и должно быть преобразовано с использованием специальных библиотечных функций.

В среде Borland C++ 3.1 предусмотрен ещё и третий параметр: char *env[]. Этот параметр используется для доступа к параметрам среды операционной системы (переменные окружения) и является указателем на массив строк, которые содержат эти параметры.

Параметры функции main() позиционно зависимы, то есть при использовании какого-либо параметра должны быть объявлены и все предыдущие параметры, но необязательно объявлять последующие параметры.

Функция main() может возвращать в ОС или вызывающую программу значение типа int. Для ОС MS-DOS возврат нулевого значения говорит об успешном завершении, возврат значения, отличного от нуля, говорит об аварийном завершении.

Пример 9

#include <stdio.h>

int main(int argc, char *argv[], char *env[])

{

for(int i=0;i<argc;i++)

printf("%s\n",argv[i]);

for(int i=0;env[i];i++)

printf("%s\n",env[i]);

return 0;

}

Данная программа, запущенная на выполнение в ОС MS-DOS, напечатает на экране командную строку MS-DOS, введённую при её запуске, и список переменных окружения. Если после неё ввести командную строку MS-DOS

if errorlevel 0 exit

то произойдёт перезагрузка ОС.

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


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



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


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

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

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


 


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

 
 

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