Инициализация массива
Инициализация - присвоение значений вместе с описанием данных. Ранее была рассмотрена инициализация простых переменных, например:
int a = 5;
Для инициализации массива за его именем располагают знак присваивания и список инициализации, который представляет собой заключенные в фигурные скобки и разделенные запятыми инициализирующие значения. Ниже приведен пример инициализации массива:
int a[4] = { 15, 21, 1, 304 };
индексы элементов -> 0 1 2 3
Констант в списке инициализации должно быть не больше, чем объявленный размер массива. Если их меньше, то элементы для которых нет констант обнуляются. Для инициализируемого массива допускается вообще не указывать размер. В этом случае размер массива определяется по количеству констант, например по описанию
int c[] = { 1, 15, 18, 11, 20 };
транслятор выделит 10 байт для хранения массива из 5 двухбайтовых целых чисел.
Частный случай инициализации массива - инициализация строк. Массив символов может быть проинициализирован стандартным образом:
char s[] = { 'A', 'B', 'C', 'D' };
Строка символов дополнительно должна завершаться нуль-символом.
char s[] = { 'A', 'B', 'C', 'D', '\0' };
В связи с тем, что инициализацию строк приходится организовывать довольно часто, язык Си предусматривает для этого упрощенную форму записи:
char s[] = "ABCD";
этом случае нуль-символ автоматически дописывается в конец строки. Два последних примера инициализации строки совершенно эквивалентны.
Программа вычисления длины строки символов
В качестве примера использования массива, рассмотрим программу определяющую длину строки символов, вводимой с клавиатуры.
#include <stdio.h>
void main (void)
{
int len;
char str[81];
printf("Введите строку: "); scanf("%s", str);
for(len=0; str[len]; len++);
printf("Длина строки = %d\n", len);
}
В этой программе используется цикл for с пустым оператором тела цикла. Цикл будет выполняться до тех пор, пока в строке не встретится нуль-символ, то есть пока выражение str[len] будет отлично от нуля. После окончания цикла переменная len станет равной количеству символов строки str, исключая нуль-символ.
Фрагмент вычисления длины строки можно оформить в виде отдельной функции и затем использовать в разных программах. Эта функция может выглядеть следующим образом:
int StrLen (char str[])
{
int len;
for(len=0; str[len]; len++);
return len;
}
При наличии функции StrLen два последних оператора предыдущей программы можно заменить одним
printf("Длина строки = %d\n", StrLen(str));
Дата добавления: 2016-03-10; просмотров: 543;