LINUX.ORG.RU

[C++][дыра в знаниях] дефолтная инициализация стандартных типов и указателей

 


0

2
int num;
//в num может быть мусор?
int *ptr;
//в ptr может быть мусор?

Вопросы в комментариях к коду. Поясните, пожалуйста. Внезапно осознал, что мой несколько не систематизированный подход к изучению языка привёл к тому, что я самостоятельно не смог ничего вспомнить.

Другими словами — в стандарте языка определены стандартные значение для num и ptr?

★★★★★
Ответ на: комментарий от anonymous

Анонимус - школоло.

Фэйспалм у тебя начнется, когда тебе вместо sizeof(char) который ты единичкой записал ВНЕЗАПНО (ц) sizeof(wchar) в этом месте понадобится.

anonymous
()
Ответ на: я быдло от Dark_SavanT

> А в стандарте сказано, что sizeof(char) == 1 байту?

Да. Только при этом стандарт уточняет, что 1 байт не обязательно 8 бит )))

anonymous
()
Ответ на: комментарий от gandjubas

> При чём здесь sizeof(char), болезный!?

Я тоже пока не понял о чем мой клон говорит.

anonymous
()
Ответ на: комментарий от anonymous

Откройте для себя ключевое слово static

так статические или автоматические? Или может быть локальные? Вы бы с терминами определились, а то путаете пятницу с сыром.

Плаваете всё таки голубчик. Согласен на 3. Ставить? Или может всё таки подучите и на перездачу прийдёте?

nanoo_linux
()
Ответ на: комментарий от nanoo_linux

> так статические или автоматические? Или может быть локальные? Вы бы с терминами определились, а то путаете пятницу с сыром.

Еще один недоучка строит из себя преподавателя-умника! Научитесь сначала отличать время жизни переменной от области видимости.

anonymous
()
Ответ на: комментарий от anonymous

время жизни переменной от области видимости.

Очевидно это предел ваших знаний. Ну как хотите, 3.

nanoo_linux
()
Ответ на: комментарий от anonymous

И часто у тебя так? У меня еще ни разу.

anonymous
()
Ответ на: комментарий от Obey-Kun

> > Да. Только при этом стандарт уточняет, что 1 байт не обязательно 8 бит

> Можно текст?

ISO/IEC 14882:2003

1.7 The C++ memory model

  1. The fundamental storage unit in the C++ memory model is the byte. A byte is at least large enough to contain any member of the basic execution character set and is composed of a contiguous sequence of bits, the number of which is implementation-defined. The least significant bit is called the low-order bit; the most significant bit is called the high-order bit. The memory available to a C++ program consists of one or more sequences of contiguous bytes. Every byte has a unique address.
arsi ★★★★★
()
Ответ на: комментарий от unsigned

> Имхо, потому что глобальные переменные надо хранить, а нули хранить проще. А локальные динамически резервируются, и обнулять их пришлось бы специально.

/facepalm

Нули никто не хранит. Более того, если ты раньше писал что-то вроде static var = 0; - то это попадало в секцию .data и занимало место в итоговом elf файле. Если же писать просто static var; - то это попадёт в .bss и будет очищенно при загрузке/старте приложения.

anonymous
()
Ответ на: комментарий от anonymous

> Да. Только при этом стандарт уточняет, что 1 байт не обязательно 8 бит )))

Где там хоть слово про байт?

namezys ★★★★
()
Ответ на: комментарий от namezys

Чуть выше же

ISO/IEC 14882:2003 1.7 The C++ memory model

The fundamental storage unit in the C++ memory model is the byte. A byte is at least large enough to contain any member of the basic execution character set and is composed of a contiguous sequence of bits, the number of which is implementation-defined. The least significant bit is called the low-order bit; the most significant bit is called the high-order bit. The memory available to a C++ program consists of one or more sequences of contiguous bytes. Every byte has a unique address.

Obey-Kun ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.