Array M. УЭИТ - Язык Си - руководство для начинающих

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

Язык Си - руководство для начинающих: краткое содержание, описание и аннотация

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

M. УЭИТ   С. ПРАТА    Д. МАРТИН
Язык Си — руководство для начинающих

Язык Си - руководство для начинающих — читать онлайн бесплатно полную книгу (весь текст) целиком

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

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

Интервал:

Закладка:

Сделать

/* Использование указателей для нахождения

среднего значения массива n целых чисел */

int mean(pa, n) int oра, n;

{

int index;

long sum; /*Если целых слишком много,

их можно суммировать в формате long int */

if(n > 0)

{

for(index=0, sum=0; index < n; index++)

sum + = *(pa + index);

return((int)(sum/n)); /* Возвращает целое */ }

else {

printf("Нет массива.\n");

return(0); }

}

Это оказалось несложным, но возникает вопрос: должны ли мы изменить при этом вызов функции, в частности numbs, который был именем массива в операторе mean(numbs, size)? Ничего не нужно менять, поскольку имя массива является указателем. Как мы уже говорили в предыдущем разделе, операторы описания:

int ра[ ];

и

int *ра;

идентичны по действию: оба объявляют ра указателем. В программе можно применять любой из них, хотя до сих пор мы использовали второй в виде *(ра + index).

Понятно ли вам, как работать с указателями? Указатель устанавливается на первый элемент массива, и значение, находящееся там, добавляется в sum. Затем указатель передвигается на следующий элемент (к указателю прибавляется единица), и значение, находящееся в нем, также прибавляется к sumи т. д. Это похоже на механизм работы с массивом, где индекс действует как стрелка часов, показывающая по очереди на каждый элемент массива.

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

ОПЕРАЦИИ С УКАЗАТЕЛЯМИ

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

/* операции с указателями */

#define PR(X)

printf("X = %u,*X = %d, &X = %u\n",X, *X,&X);

/* печатает значение указателя (адрес),

значение, находящееся по */

/* этому адресу, и адрес самого указателя */

main( )

static int urn[ ] = [100, 200, 300];

int *ptrl, *ptr2;

{

ptrl = urn; /* присваивает адрес указателю */

ptr2 = &urn [2]; /* то же самое */

PR(ptrl); /* см. макроопределение, указанное выше */

ptrl++; /* увеличение указателя */

PR(ptrl);

PR(ptr2);

++рtr2; /* выходит за конец массива */

PR(ptr2);

printf("ptr2 - ptrl = %u\n", ptr2 - ptrl);

}

В результате работы программы получены следующие результаты:

ptrl = 18, *ptrl = 100, &ptrl = 55990

ptrl = 20, *ptrl = 200, &ptrl = 55990

ptr2 =22, *ptr2 = 300, &ptr2 = 55992

ptr2 =24, *ptr2 = 29808, &ptr2 = 55992

ptr2 - ptrl = 2

Программа демонстрирует пять основных операций, которые можно выполнять над переменными типа указатель.

1. ПРИСВАИВАНИЕ. Указателю можно присвоить адрес. Обычно мы выполняем это действие, используя имя массива или операцию получения адреса ( &). Программа присваивает переменной ptrlадрес начала массива urn;этот адрес принадлежит ячейке памяти с номером 18. (В нашей системе статические переменные запоминаются в ячейках оперативной памяти.) Переменная ptr2получает адрес третьего и последнего элемента массива, т. е. urn[2].

2 ОПРЕДЕЛЕНИЕ ЗНАЧЕНИЯ Операция выдает значение хранящееся в указанной - фото 70

2. ОПРЕДЕЛЕНИЕ ЗНАЧЕНИЯ. Операция выдает значение, хранящееся в указанной ячейке. Поэтому результатом операции *ptrlв самом начале работы программы является число 100, находящееся в ячейке с номером 18.

3. ПОЛУЧЕНИЕ АДРЕСА УКАЗАТЕЛЯ. Подобно любым переменным переменная типа указатель имеет адрес и значение. Операция &сообщает нам, где находится сам указатель. В нашем примере указатель ptrlнаходится в ячейке с номером 55990. Эта ячейка содержит число 18, являющееся адресом начала массива urn.

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

Интервал:

Закладка:

Сделать

Похожие книги на «Язык Си - руководство для начинающих»

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


Отзывы о книге «Язык Си - руководство для начинающих»

Обсуждение, отзывы о книге «Язык Си - руководство для начинающих» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x