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

Тут можно читать онлайн Array M. УЭИТ - Язык Си - руководство для начинающих - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Мир, год 1988. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Язык Си - руководство для начинающих
  • Автор:
  • Жанр:
  • Издательство:
    Мир
  • Год:
    1988
  • Город:
    Москва
  • ISBN:
    5-03-001309-1 /русск./
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

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

Язык Си - руководство для начинающих - описание и краткое содержание, автор Array M. УЭИТ, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
M. УЭИТ   С. ПРАТА    Д. МАРТИН
Язык Си — руководство для начинающих

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

Язык Си - руководство для начинающих - читать книгу онлайн бесплатно, автор Array M. УЭИТ
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

/* одномерная функция, двумерный массив */

main( )

{

static int junk[3][4] = {

{2, 4, 6, 8},

{100, 200, 300, 400},

{10, 40, 60, 90} };

int row;

for(row = 0; row < 3; row ++)

printf(" Среднее строки %d равно %d.\n", row, mean(junk[row],4));

/* junk [row] - одномерный массив ИЗ четырех элементов */

}

/* находит среднее в одномерном массиве */

int mean(array,n)

int array[ ], n;

{

int index;

long sum;

if(n > 0) {

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

sum += (long)array[index];

return((int)(sum/n)); }

else {

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

return(0); }

}

Результат работы программы:

Cреднее строки 0 равно 5.

Cреднее строки 1 равно 250.

Cреднее строки 2 равно 50.

Функции и многомерные массивы

Предположим, что вы хотите иметь функцию, работающую с двумерным массивом, причем со всем целиком, а не с частями. Как вы запишите определения функции и ее описания? Подойдем к этому более конкретно и скажем, что нам нужна функция, управляющая массивом junk[ ][ ]в нашем последнем примере. Пусть функция main( )выглядит так:

/* junk в main */

main( )

{

static int junk[3][4] = {

{2, 4, 5, 8},

{100, 200, 300, 400}

{10, 40, 60, 90} };

stuff(junk);

}

Функция stuff( )использует в качестве аргумента junk, являющийся указателем на весь массив. Как написать заголовок функции, не зная, что делает stuff( )?

Попробуем написать:

stuff(junk) int junk[ ];

или

stuff(junk) int junk[ ][ ];

Нет и нет. Первые два оператора еще будут работать некоторым образом, но они рассматривают junkкак одномерный массив, состоящий из 12 элементов. Информация о расчленении массива на строки отсутствует.

Вторая попытка ошибочна, потому что хотя оператор и указывает что junkявляется двумерным массивом, но нигде не говорится, из чего он состоит. Из шести строк и двух столбцов? Из двух строк и шести столбцов? Или из чего-нибудь еще? Компилятору недостаточно этой информации. Ее дают следующие операторы:

stuff(junk)

int junk[ ][4];

Они сообщают компилятору, что массив следует разбить на строки по четыре столбца. Массивы символьных строк являются особым случаем, так как у них нулевой символ в каждой строке сообщает компилятору о конце строки. Это разрешает описания, подобные следующему:

char *list[ ];

Символьные строки представляют одно из наиболее частых применений массивов и указателей; мы вернемся к этой теме в гл. 13.

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

Как объявить одномерный массив: long id_no[200];

Как объявить двумерный массив: short chess[8][8];

Какие массивы можно инициализировать: внешние и статические.

Как инициализировать массив: static int hats[3]=[10,20,15];

Другой способ инициализации: static int caps[ ]=[3,56,2];

Как получить адрес переменной: использовать операцию &.

Как получить значение, ссылаясь на указатель: использовать операцию *.

Смысл имени массива: hats == &hats[0].

Соответствие массива и указателя: если ptr = hats;то ptr + 2 == &hat[2];и *(ptr+2) == hat[2];

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

Метод указателей для функций, работающих с массивами.

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

Вопросы

1. Что напечатается в результате работы этой программы?

#define PC(X, Y)

printf(" %с %c \n", X, Y)

char ref[ ] = { D, О, L, Т};

main( )

{

char *ptr;

int index;

for(index =0; ptr = ref; index < 4; index++, ptr++)

PC(ref[indcx], *ptr);

}

2. Почему в вопросе 1 массив refописан до оператора main( )?

3. Определите значение *ptrи *(ptr + 2)в каждом случае:

а. int *ptr;

static int boop[4] = {12, 21, 121, 212};

ptr = bоор;

б. float *ptr;

static float awk[2][2] = { {1.0, 2.0}, {3.0, 4.0}};

ptr = awk[0];

в. int *ptr;

static int jirb[4] = {10023, 7};

ptr = jirb;

г. int = *ptr;

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

ptr = torf[0];

д. int *ptr;

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

ptr = fort[0];

4. Предположим, у нас есть описание static int grid[30][100];

а. Выразите адрес grid [22][56] иначе.

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

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

Ответы

1.

D D

O O

L L

Т Т

2. По умолчанию такое положение refотносит его к классу памяти типа extern, a массивы этого класса памяти можно инициализировать.

3.

а. 12 и 121

б. 1.0 и 3.0

в. 10023 и 0 (автоматическая инициализация нулем)

г. 12 и 16

д. 12 и 14 (именно 12 появляется в первой строке из-за скобок).

4.

a. &grid[22][56]

б. &grid[22][01 и grid[22]

УПРАЖНЕНИЕ

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

13. Символьные строки и функции над строками

СИМВОЛЬНЫЕ CTРOKИ

ИНИЦИАЛИЗАЦИЯ СИМВОЛЬНЫХ СТРОК

ВВОД-ВЫВОД СТРОК

ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ, РАБОТАЮЩИХ CO CТРОKAMИ

АРГУМЕНТЫ КОМАНДНЫХ СТРОК

СИМВОЛЬНЫЕ CTРOKИ

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

На рис. 13.1 представлена работающая программа, которая иллюстрирует несколько способов создания строк, их чтения и вывода на печать. Мы используем две новые функции: gets( ), которая получаст строку, и puts( ), которая выводит строку. (Вы, вероятно, заметили сходство их имен с функциями getchar( )и putchar( ).) В остальном программа выглядит достаточно привычно.

/* работа со строками */

#include

#deline MSG "У вас, наверное, много талантов.

Расскажите о некоторых" .

/* константа символьной строки */

#define NULL 0

#define LIM 5

#define LINLEN 81 /* максимальная длина строки + 1 */

char ml[ ] = " Только ограничьтесь одной строкой.";

/* инициализация внешнего символьного массива */

char *m2 = " Если вы не можете вспомнить что-нибудь, придумайте.";

/* инициализация указателя внешнего символьного массива */

main( )

{

char name[LlNLEN];

static char talents[LINLEN];

int i;

int count = 0;

char *m3 = " \n Достаточно обо мне -- Как вас зовут?";

/* инициализация указателя */

static char *mytal[LlM] = ("Быстро складываю числа",

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

Интервал:

Закладка:

Сделать


Array M. УЭИТ читать все книги автора по порядку

Array M. УЭИТ - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Язык Си - руководство для начинающих, автор: Array M. УЭИТ. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x