变量地址与整数之间的差异

时间:2015-02-05 07:21:17

标签: c pointers integer

整数与&返回的地址之间有什么区别?

因此,为什么在将整数指针分配给整数指针时,我应该将整数转换为整数指针?

2 个答案:

答案 0 :(得分:2)

整数和指向整数的指针是不同的类型。

  • 整数变量保存整数值。
  • 指针变量保存地址值。

鉴于你的例子:

int value = 5;
int address = &value;
  1. valueint类型的变量。
  2. &value返回int*
  3. 类型的地址
  4. address = &value尝试将int*分配给int
  5. 虽然整数可以转换指向指针并返回,但这并不意味着地址必须是整数值。

    就像您可以将double分配给int一样,您可以将int *分配给int。但它不一定是你想要的,这就是为什么编译器会对此发出警告。 实际上,除非你非常接近硬件(例如编写驱动程序),否则你不太可能需要在整数和指针之间进行转换。

    正确的方法,无需任何演员阵容:

    int * pointer = &value;
    

答案 1 :(得分:0)

  

整数与&返回的地址之间有什么区别?

我认为这个问题已在评论中得到解答。不同之处在于这些变量的类型。基本上int =整数类型,*int =指针类型。

此外:从pointer转换为int可能会导致未定义的行为。

  

因此,为什么我应该在整数指针中输入整数   将它分配给整数指针?

因为标准说:

C99第6.5.4和6.5.16.1节

  

包含指针的转换,除了允许的指令   6.5.16.1的约束应通过明确的方式规定   铸造。

和C ++第5.4节:

  

以下未提及且未明确定义的任何类型转换   用户(12.3)格式不正确。

相关问题