Когда я создаю char name[] = "John"
и пытаюсь разыменовать *name
то получаю J
. Это значит name сам по себе это адрес? Если да, то адрес чего? Насколько я знаю, если оператор <<
видит тип char *
, то вместо адреса он выводит С-строку. Поэтому ссылаюсь на то, что выводит мне <<
, не зная тонкостей. Можно ли обьяснение как устроен массив типа char
Как и любой другой массив - подряд в памяти расположены элементы типа char
. Имя массива выступает неизменяемым указателем (вы не можете заставить ваше name
указывать на другой массив) на первый элемент массива.
Поэтому *name
означает сам первый элемент массива с типом char
.
Ну, а в С++ организовано так, что cout
выполняет вывод, основываясь на типе выводимого, и, видя char*
, он выводит переданное как строку в стиле С (которая представляет собой массив символов; для указания завершения строки (не самого массива - в массиве в 1000 элементов может располагаться слово из 3 букв) используется не выводимый нулевой символ (не '0'
, а именно 0
(ну, или '\0'
- как вам удобнее записывать)).
Виртуальный выделенный сервер (VDS) становится отличным выбором
Давно мучаюсь вопросом есть ли различия между командами меньше и меньше или равно на низком уровне в плане количества команд и производительности?
Задача в том, чтобы быстро находить n-тый член последовательности Голомба