以下C ++代码是合法的:
char* ptr;
而以下不是(使用未初始化的变量是UB):
ptr++;
以下代码:
char* ptr2 = ptr;
是合法的还是未定义的行为?
答案 0 :(得分:6)
这是未定义的,原因与后期增量相同 - 您没有定义的基础开始。
答案 1 :(得分:5)
声明声明:
char* ptr2 = ptr;
将读取ptr
的(未初始化)值。它是UB,因为ptr
的值未定义。
答案 2 :(得分:3)
这是合法的,但行为未定义,因为您不知道ptr
的内容(大多数编译器会给您一个警告)。