Я изучаю информатику и в свободное время пробую язык программирования Си. Кроме того, я использую эту книгу для лучшего понимания: Компьютерные системы: взгляд программиста . Это дает несколько примеров кодов на языке C, а также.
Итак, я написал код с некоторыми указателями, например: int *x
. И я все еще борюсь с указателями и ссылками - хотя, думаю, я это понимаю.
Итак, я написал небольшой сценарий и экспериментировал с указателями и ссылками.
Код:
#include <stdio.h>
int main() {
int *x;
printf("Pointer: %p\n", x);
printf("Value int: %d\n", *x);
printf("Pointer ref: %p\n", &x);
}
Вывод в bash / терминал:
Pointer: 0x7ffe99ea7420
Value int: 1
Pointer ref: 0x7ffe99ea7330
(Настройка: Ubuntu 16.04 x86_64)
Теперь я немного запутался, что неинициализированная переменная x
имеет значение 1 - и что Указатель и Ссылка указывают на адрес памяти.
В моем первом семестре в университете я изучил Java, а также понимаю, как работает JVM и стек.
Поэтому я предполагаю, что в Си это тоже самое. Компилятор выделил немного памяти для каждого объекта в коде. Но почему значение x
1 .
Может быть, кто-то был бы так мил и объяснил бы это мне.
Я также очень благодарен за любые ссылки для дальнейшего чтения или обмена знаниями.