Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
以下 C++ 代码是合法的:
char* ptr;
而以下不是(使用未初始化的变量是 UB):
ptr++;
将以下代码:
char* ptr2 = ptr;
是合法的还是未定义的行为?
这与后增量相同的原因是未定义的——你没有一个定义的基础。
声明声明:
将读取 的(未初始化的)值ptr。它是 UB,因为 的值ptr没有定义。
ptr
这是合法的,但行为是不确定的,因为你不知道内容ptr(大多数编译器会给你一个警告)。