是否使用未初始化的变量合法初始化变量?

时间:2013-06-13 11:02:38

标签: c++ initialization language-lawyer

以下C ++代码是合法的:

char* ptr;

而以下不是(使用未初始化的变量是UB):

ptr++;

以下代码:

char* ptr2 = ptr;

是合法的还是未定义的行为?

3 个答案:

答案 0 :(得分:6)

这是未定义的,原因与后期增量相同 - 您没有定义的基础开始。

答案 1 :(得分:5)

声明声明:

char* ptr2 = ptr;

将读取ptr的(未初始化)值。它是UB,因为ptr的值未定义。

答案 2 :(得分:3)

这是合法的,但行为未定义,因为您不知道ptr的内容(大多数编译器会给您一个警告)。