1

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

char* ptr;

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

ptr++;

将以下代码:

char* ptr2 = ptr;

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

4

3 回答 3

6

这与后增量相同的原因是未定义的——你没有一个定义的基础。

于 2013-06-13T11:05:44.560 回答
5

声明声明:

char* ptr2 = ptr;

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

于 2013-06-13T11:06:16.330 回答
3

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

于 2013-06-13T11:06:11.873 回答