【发布时间】:2013-04-01 09:23:38
【问题描述】:
我想知道以这种方式设置 C 指针的最大区别是什么:
int int_var = 5;
int *int_ptr = &int_var;
这样:
int int_var = 5;
int *int_ptr = int_var;
因为在这两种情况下*int_ptr 的结果都是 5,不是吗?
【问题讨论】:
-
在这两种情况下,*int_ptr 的结果都是 5,不是吗? 不是。
-
在第二种情况下,
*int_ptr将是存储在内存地址 5 的任何内容。换句话说,垃圾。 -
提示:调高编译器的警告级别和/或注意您已经收到的警告;)。
-
你使用
gcc吗?然后激活所有警告:-Wall -Wextra -pedantic。这应该已经告诉您发生了异味。 -
@jpm 由于很少映射如此低的地址,操作系统更有可能将其视为无效访问。