Змінні і їх адреси

Рис.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 осередки, потім йде наступний. Один по одному і ніяк інакше. Це важливий факт, він іноді використовується в програмуванні. Але зараз не про це.

Про все по порядку.

Схожі статті