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

sha*_*oth 1 c++ initialization language-lawyer

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

char* ptr;
Run Code Online (Sandbox Code Playgroud)

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

ptr++;
Run Code Online (Sandbox Code Playgroud)

请问以下代码:

char* ptr2 = ptr;
Run Code Online (Sandbox Code Playgroud)

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

mah*_*mah 6

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


Mat*_*son 5

声明声明:

char* ptr2 = ptr;
Run Code Online (Sandbox Code Playgroud)

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