C99 [部分 6.3.2.1/1]说

LVALUE是具有对象类型或void以外的不完整类型的表达式。 如果在评估对象时未指定该对象,则该行为是未确定的。

该部分有什么 大胆的 意思是?有人可以用例子解释吗?

有帮助吗?

解决方案

零指针,指针以交易对象和指针,以自动存储持续时间的生命已经结束。在无效的LVALUE中取消这些结果;如果幸运的话,您通常会遇到的未定义行为是塞格福,如果没有,任意堆或堆叠损坏。

其他提示

#include <stdio.h>

int* ptr;

void f(void) {
    int n = 1;
    ptr = &n;
}

int main(void) {
    f();
    // UB: *ptr is an lvalue that is not an object:
    printf("%d\n", *ptr);
    return 0;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top