我不得不打印一个指针的值:
int *p = 0;
printf("%d", *p);
Run Code Online (Sandbox Code Playgroud)
上面的代码抛出异常。
所以我尝试了printf("%d", p),并且奏效了。
为什么它只在没有*?
当您取消引用指针p(as *p) 时,您取消引用一个空指针(您尝试获取p指向where 的值,但它实际上并未指向任何地方)。这会导致未定义的行为,并且通常会导致崩溃。
当您使用 plain 时,p您将打印指针变量本身的内容,而不是它指向的位置的值。但这也会导致未定义的行为,因为%d格式是打印一个int值,而不是一个int *值。不匹配的格式说明符和参数类型是 UB。
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |