Инициализация символьного массива.
Символьные строки и символьные массивы.
Инициализация массива в программе.
Организация доступа к элементам массива и их инициализация обеспечивается использованием цикла for. Рассмотрим приём ввода элементов массива и их суммирование:
#include <iostream.h>
#define N 8
void main()
{
int nums[N];
int ctr;
int total=0; //Переменная для суммы элементов массива
for (ctr=0; ctr<N; ctr++)
{
cout<<”Введите элемент массива ”;
cin>>nums[ctr];
total+=nums[ctr];
}
cout<<”сумма=”<<total<<” ”;
return 0;
}
Программа будет выполняться быстрее, если массив будет инициализирован во время компиляции со списком инициализаторов массива вместо инициализации массива с операторами присваивания во время выполнения программы.
В С++ нет строковых переменных, но так как строка представляет собой последовательность нескольких символов, то символьный массив удобно использовать для размещения строк. Например:
char name [ ]=”МИША ИВАНОВ”;
Такой символьный массив располагается в памяти следующим образом:
name[0] | М | В конце каждой строки имеется null символ (ограничитель строки), на который специально |
name[1] | И | резервируется память. Содержимое строки |
name[2] | Ш | можно вывести на экран, используя оператор |
name[3] | А | cout<<name; |
name[4] | И | заметим, что имя массива указывается без |
name[5] | В | квадратных скобок. Если инициализировать |
name[6] | А | char cat[]=”Lucy”; |
name[7] | Н | то С++ сам посчитает размерность массива и |
name[8] | О | учтёт двоичный нуль. |
name[9] | В | Без двоичного нуля эта конструкция не будет. |
name[10] | интерпретирована компилятором как строка |
Фундаментальное правило С++: строки хранятся в символьных массивах, но не все символьные массивы содержат строки.
char carat1[4]={‘a’,’b’,’c’,’d’}; \набор символов
char carat2[ ]=”Good”; \строка
Массив carat1 является символьным, поскольку не содержит двоичного нуля в конце, а массив carat2 является строкой, так как компилятор сам определяет по кавычкам, что это строка и ставит в конце двоичный нуль. При расчёте длины строки двоичный нуль никогда не учитывается, хотя в памяти для него место резервируется.
Библиотечная функция strcpy() позволяет копировать строковые константы в массив.
Инструкция strcpy(petname,”Bumsi”); копирует строку Bumsi в массив petname. Для использования этой функции необходимо включать в программу заголовочный файл string.h. Далее приведена программа, иллюстрирующая способы инициализации символьного массива.
#include <iostream.h>
#include <string.h>
void main()
{
char name1[ ]=”Иванов”;
char name2[6];
char name3[3];
strcpy(name2,”Петров”);
name3[0]=’k’;
name3[1]=’i’;
name3[2]=’m’;
name3[3]=’
cout<<name1<<endl<< name2<<endl<< name3;
return 0
}