整数与&
返回的地址之间有什么区别?
因此,为什么在将整数指针分配给整数指针时,我应该将整数转换为整数指针?
答案 0 :(得分:2)
整数和指向整数的指针是不同的类型。
鉴于你的例子:
int value = 5;
int address = &value;
value
是int
类型的变量。&value
返回int*
address = &value
尝试将int*
分配给int
。虽然整数可以转换指向指针并返回,但这并不意味着地址必须是整数值。
就像您可以将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)格式不正确。