Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

Здесь есть возможность читать онлайн «Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Год выпуска: 0101, Издательство: Вильямс, Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Язык программирования C. Лекции и упражнения (6-е изд.) 2015: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык программирования C. Лекции и упражнения (6-е изд.) 2015», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Для объявления простого одномерного массива применяется следующая форма:

тип имя [размер];

Здесь тип — это тип данных каждого элемента массива, имя — имя массива, а размер — количество элементов. Традиционно язык С требовал, чтобы размер был константным целочисленным выражением. Стандарт С99/С11/С11 разрешает ис-

Массивы и указатели 413

пользовать неконстантное целочисленное выражение; в таком случае массив называется массивом переменной длины.

В С имя массива интерпретируется как адрес первого элемента этого массива. Другими словами, имя массива эквивалентно указателю на его первый элемент. В целом массивы и указатели тесно связаны друг с другом. Если ar — это массив, то выражения ar [1] и * (ar + i) эквивалентны.

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

Добавление к указателю целого числа или инкрементирование указателя изменяет его значение на количество байтов, занимаемое в памяти объектом, на который ссылается указатель. То есть если pd указывает на 8-байтовое значение типа double в массиве, то добавление 1 к указателю pd увеличивает его значение на 8, так что указатель будет ссылаться на следующий элемент массива.

Двумерные массивы представляют массивы массивов. Например, объявление

double sales[5] [12];

создает массив по имени sales, имеющий пять элементов, каждый из которых является массивом из 12 значений типа double. На первый из этих одномерных массивов можно ссылаться как на sales [0], на второй — sales [1] и т.д., причем каждый из этих массивов содержит 12 значений double. Второй индекс служит для дос тупа к конкретным элементам в этих массивах. Например, sales [2] [5] — это шестой элемент массива sales [2], a sales [2] — третий элемент массива sales.

Традиционный для С метод передачи многомерного массива в функцию заключается в передаче имени массива, которое является адресом, параметру подходящего типа указателя. Объявление такого указателя должно описывать все размерности массива кроме первой; размерность первого параметра обычно передается во втором аргументе. Например, чтобы обработать ранее упоминавшийся массив sales, прототип функции и вызов функции должны иметь вид:

void display(double ar[][12], int rows);

display(sales, 5);

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

void display(int rows, int cols, double ar[rows] [cols]);

display(5, 12, sales);

В обсуждении участвовали массивы значений типа int и типа double, но те же концепции применимы к массивам других типов. Тем не менее, в отношении символьных строк действует много специальных правил. Это вытекает из того факта, что завершающий нулевой символ в строке предоставляет функциям способ обнаружения конца строки без необходимости в передаче им размера. Символьные строки будут подробно рассматриваться в главе 11.

414 глава 10

Вопросы для самоконтроля

Ответы на вопросы для самоконтроля приведены в приложении А.

1. Что выведет следующая программа?

#include int main(void)

{

int ref[] = {8, 4, 0, 2 }; int *ptr; int index;

for (index = 0, ptr = ref; index < 4; index++, ptr++) printf("%d %d\n", ref[index], *ptr); return 0;

}

2. Сколько элементов содержит массив ref из вопроса 1?

3. Адресом чего является ref из вопроса 1? Что можно сказать oref + 1?На что указывает ++ref?

4. Каковы значения *ptr и * (ptr + 2) в каждом из следующих случаев?

а. int *ptr;

int torf [2] [2] = {12, 14, 16]; ptr = torf [0];

б. int * ptr;

int fort [2] [2] = { {12}; {14,16]]; ptr = fort[0];

5. Каковы значения **ptr и ** (ptr + 1) в каждом из следующих случаев?

а. int (*рtг) [2];

int torf[2] [2] = {12, 14, 16}; ptr = torf;

б. int (*ptr) [2];

int fort[2] [2] = { (12), {14,16] }; ptr = fort;

6. Предположим, что имеется следующее объявление:

int grid[30] [100];

а. Выразите адрес grid [22] [56] одним способом.

б. Выразите адрес grid [22] [0] двумя способами.

в. Выразите адрес grid[0] [0] тремя способами.

7. Создайте подходящее объявление для каждой из описанных ниже переменных.

а. digits представляет собой массив из 10 значений int.

б. rates представляет собой массив из шести значений float.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»

Представляем Вашему вниманию похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»

Обсуждение, отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x