Вход/Регистрация
Язык Си - руководство для начинающих
вернуться

Д. МАРТИН

Шрифт:

ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

Как определять функцию.

Как передавать функции информацию: при помощи аргументов.

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

Где необходимо описывать аргументы: после имени функции и перед первой фигурной скобкой.

Где необходимо описывать остальные локальные переменные: после первой фигурной скобки.

Когда и как использовать оператор return.

Когда и как использовать адреса и указатели для доступа к объектам.

ВОПРОСЫ И ОТВЕТЫ

Вопросы

1. Напишите функцию, возвращающую сумму двух целых чисел.

2. Какие изменения должны были бы произойти с функцией из вопроса 1, если вместо целых складывались бы два числа типа float?

3. Напишите функцию alter, которая берет две переменные х и у типа int и заменяет соответственно на их сумму и разность.

4. Проверьте, все ли правильно в определении функции, приведенной ниже?

salami(num)

{

int num, count;

for(count = 1; count <= num; num++) printf(" Осалями!\n");

}

Ответы

1.

sum(j,k) int j, k;

{ return(j+k); }

2.

float sum(j,k) float j,k;

Необходимо также привести описание функции float sum и вызывающей программе.

3. Поскольку мы хотим изменить две переменные в вызывающей программе, можно воспользоваться адресами и указателями. Обращение к функции будет выглядеть так: alter(&x,&y). Возможное решение имеет следующий вид:

alter(px, ру)

int *рх, *ру; /* указатели на х и у*/

{

int sum, diff;

sum = *рх + *ру; /* складывает содержимое двух переменных, определяемых адресами */

diff = *рх- *ру;

*рх= sum;

*ру = diff;

}

4. Нет; переменная num должна быть описана перед первой фигурной скобкой, а не после нее. Кроме того, выражение num++ необходимо заменить на count++.

УПРАЖНЕНИЯ

1. Напишите функцию mах(х, у), возвращающую большее из двух значении.

2. Напишите функцию chllne(ch, i, j), печатающую запрошенный символ с i– й пo j– ю позиции. Смотри программу художник-график, приведенную в гл. 7.

10. Классы памяти и разработка программ

ЛОКАЛЬНЫЕ И ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ

КЛАССЫ ПАМЯТИ

ФУНКЦИЯ ПОЛУЧЕНИЯ СЛУЧАЙНЫХ ЧИСЕЛ

ПРОВЕРКА ОШИБОК

МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ

СОРТИРОВКА

КЛЮЧЕВЫЕ СЛОВА: auto, extern, static, register

Одно из достоинств языка Си состоит в том, что он позволяет управлять ключевыми механизмами программы. Классы памяти языка Си - пример такого управления; они дают возможность определить, с какими функциями связаны какие переменные и как долго переменная сохраняется в программе. Классы памяти - первая тема данной главы.

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

КЛАССЫ ПАМЯТИ И ОБЛАСТЬ ДЕЙСТВИЯ

Мы уже упоминали раньше, что локальные переменные известны только функциям, содержащим их. В языке Си предполагается также, что о глобальных переменных "знают" сразу несколько функций. Предположим, например, что и main, и critic имеют доступ к переменной units. Это будет иметь место, если отнести units к "внешнему" классу памяти, как показано ниже:

/* глобальная переменная units */

  • Читать дальше
  • 1
  • ...
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: