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

Is initializing a variable with an uninitialized variable legal?

本文关键字:变量 初始化 是否      更新时间:2023-10-16

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

char* ptr;

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

ptr++;

下面的代码:

char* ptr2 = ptr;

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

这是未定义的,原因与后增量相同——您没有一个定义的基础作为开始。

声明语句:

char* ptr2 = ptr;

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

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