708________________________________________________Глава 12

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

char S[10] = {"abcdefghi");

char SI [10] = {"abc"};

Последнее объявление выделяет место под массив из 10 элементов, но инициа-
лизирует его строкой из трех элементов.

В объявлении со списком инициализации размер массива можно не указы-
вать. Тогда количество элементов массива будет равно количеству элементов в спи-
ске начальных значений. Например, объявление

int А[ ] = (1, 2, 3, 4, 5);

создает массив из пяти элементов. Объявление

char SI[ ] = {"abc"};

создает массив из четырех элементов — три значащих символа плюс нулевой сим-
вол.

В объявлении массива в качестве размера лучше всегда использовать имено-
ванные константы. Например, ниже приведено объявление массва и оператор,
подсчитывающий сумму его элементов:

int A[10];

// операторы заполнения массива

// подсчет суммы
int Sum = А[0] ;

for(int i = 1; i < 10; i++) Sum += A[i];

Если в дальнейшем вы решите, что вам требуется массив А не из 10 элементов,
а, например, из 100, вы должны будете изменить размер массива и в объявлении
А, и во всех операторах, работающих с этим массивом (в данном случае в операто-
ре for). А ведь таких операторов в разных частях программы может быть очень
много. О такой программе говорят, что она плохо масштабируется.

Грамотнее реализовать этот пример следующим образом:

const Amax = 10;

int A[Amax] ;

// операторы заполнения массива

// подсчет суммы
int Sum = А[0];

for(int i = 1; i < Amax; i++) Sum += A[i];

В этом случае вы вводите именованную константу Amax и используете ее во
всех операторах, в которых вам требуется размер массива. Тогда при необходимо-
сти изменить размер массива вам достаточно изменить его только в одном операто-
ре, объявляющем Amax. Программа сразу становится масштабируемой. А объяв-
ление Amax как константы гарантирует, что объявленное значение не будет слу-
чайно изменено где-то в программе.

Аналогичный результат можно получить, если заменить объявление констан-
ты директивой компилятора #define (см. главу 11 раздел 11.2.2).

ftdefine Amax 10

Хороший стиль программирования

Все размеры массивов в программе следует определять именованными константами или
макросами. Это делает программу более понятной и существенно облегчает ее отладку и со-
провождение.