Рис.3 Приклад подання пам'яті комп'ютера
Як ми вже знаємо, кожна змінна залежно від її типу, вона займає в пам'яті різну кількість байт. Ну або в нашій інтерпретації осередків. Для того, щоб дізнатися розміри різних типів змінних можна використовувати функцію sizeof (). Нижче представлена програма, яка ілюструє її використання.
printf ( "razmer peremennoi tipa char. \ n", sizeof (char));
printf ( "razmer peremennoi tipa int. \ n", sizeof (int));
printf ( "razmer peremennoi tipa float. \ n", sizeof (float));
printf ( "razmer peremennoi tipa double. \ n", sizeof (double));
Результат її роботи:
Рис 4. Програма ілюструє роботу sizeof ()
У вас дані цифри можуть бути іншими речі. Так як стандартом мови не обмовляється який тип скільки повинен займати в пам'яті. Обумовлюються тільки зі співвідношення. Наприклад, розмір double не повинен бути менше ніж розмір float.
Тобто, якщо я оголошую в програмі змінну типу int, то під неї в пам'яті виділяється 4 байта (осередки).
printf ( "adres peremennoi a% # x \ n", a);
printf ( "adres peremennoi b% # x \ n", b);
Рис.6. Приклад розташування змінних в пам'яті
Як ви вже помітили, змінні в пам'ять записуються не одна за одною, а в довільному місці, аби там було порожньо і вистачило місця. Виняток становлять масиви. Вони записуються в пам'ять послідовно. Подивіться на результат роботи наступної програми.
printf ( "adres peremennoi a [0]% # x \ n", a [0]);
printf ( "adres peremennoi a [1]% # x \ n", a [1]);
Рис.7 Розташування масиву в пам'яті
Бачите, кожен елемент займає рівно 4 осередки, потім йде наступний. Один по одному і ніяк інакше. Це важливий факт, він іноді використовується в програмуванні. Але зараз не про це.
Про все по порядку.