如果为int指针赋值常量会发生什么?

时间:2016-07-18 06:51:06

标签: c

如果我已经为 int 指针指定了常量值,那么内部发生了什么?

赞,int *p = 5;

如果我打印 * p p 以及为什么会有什么价值?

2 个答案:

答案 0 :(得分:4)

如果你有

int *p = 5;

您有一个指向地址p的变量5。该地址很可能没有有效的int值。取消引用指针很可能会导致未定义的行为。写入内存很可能会导致崩溃,并且由于它没有对齐读取,因此在某些不允许未对齐读取的系统上也可能导致崩溃。

在某些情况下, 这样做是有效的,这就是它被允许的原因。例如,考虑具有固定存储器映射的小型嵌入式系统,其中某些"寄存器"存储在某个固定地址。然后你可以制作一个指针并使其直接指向该地址。

答案 1 :(得分:1)

声明

int *p = 5;

表示您创建一个指向整数指针,并为其内容指定值5。换句话说,您将指针p指向内存地址5,在那里您不知道是否存在有效的整数值。

  • 如果您打印*p,则实际打印指针的 内容 ,换句话说,就是p的整数值指着。
    • 如果您打印p,则实际打印指针p 地址 ,换言之,p的内存地址存储。