Школа создателей компьютерных игр

BannerDrive.ru
[Главная] [С чего начать?] [Дистанционное обучение] [Статьи] [Обучалки] [Книги] [Софт] [Форум] [Ссылки] [О сайте]

Массивы



Подпишитесь на рассылку "Создание компьютерных игр"

Рассылки Subscribe.Ru
Создание компьютерных игр

Рассылка выходит раз в месяц.


Понравился сайт? Узнайте, как помочь сайту.


Рекомендуемые книги


Андре Ламот.
Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации


Андре Ламот.
Программирование игр для Windows. Советы профессионала


Проголосуйте за сайт в рейтинге GameTop!
(нажмите на кнопку рейтинга)

GameTop - рейтинг игровых ресурсов. Портал Rolemancer (www.rolemancer.ru)

Не забывайте, что результаты рейтинга обновляются раз в неделю. Пожалуйста, голосуйте почаще!


Статистика посещаемости

Rambler's Top100

Случайные числа | Все обучалки раздела | Структуры

Описание

Объясняется, что такое массивы, и как их использовать.

Программа создает символьный и числовой массивы и демонстрирует работу с ними на примере простых действий.

Скачать обучалку (Visual C++ 6)

Работа программы

Исходный код

// Done by TheTutor -- 06/01/01

// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com

/*      Что такое массив? Массив можно представить себе как набор переменных
      в одной переменной. Например:
      
      Мы можем представить имя Sue вот так:

      char letter1 = 'S';
      char letter2 = 'u';
      char letter3 = 'e';

      Затем, печатая каждую букву мы получим "Sue"
      
      printf("%c%c%c\n",letter1,letter2,letter3);

      Но вместо этого мы можем использовать символьный массив

      char name2[4] = "Sue";

      printf("%s\n",name2);

      ////////////////////////////////////////////

      Рассмотрим name --

      name[0] = 'S'
      name[1] = 'u'
      name[2] = 'e'
      name[3] = NULL            Каждый символьный массив должен заканчиваться нулевым (NULL) символом
                                    Не знаете, что такое нулевой символ? Просто думайте о нем как
                                    о способе сказать "Последовательность символов заканчивается здесь"
                              
      Каждый массив состоит из элементов. name[0] является элементом массива name, name[1]
      также элемент name и name[2] также элемент массива name.

      Обратите внимание на то, что первый элемент массива имеет индекс 0. Индекс это всего
      лишь позиция в массиве. Например

      name[] = "Carlos"            Если не указывать число элементов, такое объявление создаст
                                          массив нужной длины. По одному элементу для каждой буквы и
                                          завершающий NULL символ. Таким образом, общая длина name составит
                                          7 элементов. Мы покажем это в программе.
      
      'r' имеет в массиве индекс 2 - не забывайте, первый индекс массива всегда ноль.

      А теперь приступим к программе

*/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>    // Содержит определение функции strlen()

#define SHOW_ANSWERS 0 /* Чтобы увидеть "ответы" (то, что будет печататься на экране)
                                      просто замените ноль на 1 - Однако, я настоятельно рекомендую
                                      сперва посмотреть на программу и написать на бумаге то, что, 
                                      как вы предполагаете, будет напечатано, это отличный способ
                                      обучения */

int main()
{
      char name[] = "Carlos"; // массивы могут быть не только типа char -- они могут быть типа
                                          // int, double, типа, определенного пользователем и т.д.

      int numbers[] = {0,1,2,3,4,5,6,7,8,9};  // int, double, и другие типы данных
                                                                  // отличаются от char тем, что они НЕ имеют
                                                                  // завершающего NULL символа.

      // Сперва, покажем что длина name 7 элементов
      // Функция strlen() возвращает длину символьной строки

      printf("name[] length = %d\n\n\n",strlen(name));

      // Если вы запускали эту программу, вы заметили, что она напечатала 6 -- 
      // "Но вы же сказали, что длина name 7 элементов???"

      // Измените программу так, чтобы первая строка была следующей:
      // char name[6] = "Carlos";

            /* Слово "Carlos" состоит из 6 букв, поэтому программа должна работать, верно?
               Вы увидите, что это приведет к неожиданным результатам, программа не скомпилируется,
               или она может сказать, что длина "Carlos" 62 (или другое число). Это
               полностью зависит от операционной системы - Причина в изменении на строку
               char name[6] = "Carlos", при этом массив будет иметь 6 элементов.
               В массиве не будет места для завершающего NULL символа, который всегда
               ОБЯЗАН быть в символьных массивах -- Поэтому запомните: strlen() возвращает
               длину строки (символьного массива) минус завершающий NULL символ. */

      /* 
            Ниже мы проделаем с массивом несколько операций.
            Не забудьте установить SHOW_ANSWERS равным 1 чтобы увидеть, что будет
            напечатано, но сперва проведите расчеты на бумаге :)
            
      */

      if(SHOW_ANSWERS)
      {
            printf("%s\n",name);
            printf("%c\n\n",name[3]);
      }

      name[3] = name[2];

      if(SHOW_ANSWERS)
            printf("%s\n\n",name);

      name[5] = 't';

      if(SHOW_ANSWERS)
            printf("%s\n\n",name);

      name[3] = '\0'; // '\0' является эквивалентом NULL

      if(SHOW_ANSWERS)
            printf("%s\n\n",name);


      // А теперь напечатаем значения из числового массива

      printf("numbers[2] = %d\n",numbers[2]);
      
      if(SHOW_ANSWERS)
            printf("%d\n",numbers); // Как вы думаете, что это делает?
                                                // Массивы, на уровне компьютера, представляют собой последовательность
                                                // блоков в памяти, имеющих определенную длину -- Это выражение
                                                // напечатает адрес памяти первого элемента массива
                        
      return EXIT_SUCCESS; // EXIT_SUCCESS это заранее определенное число, говорящее
                                     // операционной системе, что во время работы программы не возникло никаких проблем.

}

// © 2001 GameTutorials

// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com

Скачать обучалку (Visual C++ 6)

Случайные числа | Все обучалки раздела | Структуры

[Главная] [С чего начать?] [Дистанционное обучение] [Статьи] [Обучалки] [Книги] [Софт] [Форум] [Ссылки] [О сайте]

Copyright © 2003-2005 Евгений Казеко. Все права защищены. E-mail: evgeniy@kazeko.com

закажите тест Linksys и узнайте больше про роутер , леса строительные для наружних работ