主题
解释以下代码中:哪些名字是对象?哪些名字是类型?哪些表达式求值会产生未定义行为?
int main(void) { int x; int* p = &x; return *p; }
x 是一个 int 对象,但它没有被初始化。p 是一个指针对象,初始化为 x 的地址。
x
int
p
对象:
类型:
int*
void
会产生未定义行为的是 *p 的求值。虽然 p 指向 x,但是 x 的值未初始化;读取未初始化的自动存储期 int 对象会产生未定义行为。
*p