Урок 4.Массивы и оператор sizeof

Всем привет! Как и обещал, пищу о массивах и о операторе sizeof. Начнем с массивов. В третьем уроке мы рассмотрели один вариант массива, а сегодня рассмотрим и второй. Массив — это совокупность данных одного типа. То есть вы объявляете множество переменных одного типа. Рассмотрим это на примере.

#include 
 
int main (){
int a[3][2]={{1,2},{3,4},{5,6}};
double b[5][6];
printf ("a=%d\n", a[0][0]);
b[4][5]=10; /*Присваиваем значение 10 массиву b[4][5]*/
printf ("b=%f\n", b[4][5]);
return 0;
}

Начнем с четвертой строки. Там мы объявляем переменную типа int. Но как вы могли заметить она имеет не обычную конструкцию. Это и есть Массив. После объявления массива у нас идут две квадратные скобки. Это называется ключом. В первой мы указываем количество скобок которые идут после знака равно, а во втором количество значений в каждой скобке. Как видно, у нас в первых квадратных скобках значение 3, и соответственно после знака равно идет одна «большая» скобка, внутри которого содержится три более «маленьких» скобок. Во второй квадратной скобке у нас цифра два, соответственно в «маленьких» скобках по два значения. Обратите внимание, скобки и значения в них разделены запятыми.

В пятой строке у нас опять массив. Но на этот раз мы не присваиваем значения. Это мы можем сделать позднее, например у нас в седьмой строке.

В шестой и восьмой строке мы выводим информацию на экран. Повторяю еще раз, нумерация при выводе и вводе (ввод рассмотрим в следующем уроке) начинается с нуля.

sizeof
Оператор sizeof используется для вывода количества памяти в байтах, которая выделяется для хранения информации. В зависимости от разрядности операционной системы выделяется разное количество памяти. Вот пример использования оператора sizeof.

#include 
 
int main (void){
int f[11];
int b=5.35;
printf ("b=%d\n", f[0]=sizeof('b'));
printf ("int=%d\n", f[1]=sizeof(int));
printf ("char=%d\n", f[2]=sizeof(char));
printf ("short=%d\n", f[3]=sizeof(short));
printf ("double=%d\n", f[4]=sizeof(double));
printf ("long=%d\n", f[5]=sizeof(long));
return 0;
}

Результат выполнения программы на 64-битной платформе:

b=4
int=4
char=1
short=2
double=8
long=8

Цифры это количество памяти в байтах, выделенных для данного типа переменных. На 16-ти и 32-х битных платформах результат будет другим.

Д/З:

Сколько переменных f остались свободными во втором примере и почему?