变量地址和整数地址之间的区别
Difference between address of a variable and integer
整数和&
返回的地址有什么区别?
因此,在将整数赋值给整数指针时,为什么要将整数类型转换为整数指针?
整数和指向整数的指针是不同的类型。
- 整数变量保存整数值。
- 指针变量保存地址值。
以你的例子为例:
int value = 5;
int address = &value;
value
是 int
. 类型的变量
&value
returns 地址类型 int*
address = &value
尝试将 int*
分配给 int
。
虽然整数可以转换为指针并返回,但这并不意味着地址一定是整数值。
就像您可以将 double
分配给 int
一样,您可以将 int *
分配给 int
。但这不一定是你想要的,这就是编译器警告它的原因。
事实上,除非你的工作非常接近硬件(例如编写驱动程序),否则你不太可能需要在整数和指针之间进行转换。
无需任何转换的正确方法:
int * pointer = &value;
Whats the difference between integer and the address returned by & ?
我认为这个问题已经在评论中得到了解答。不同之处在于这些变量的类型。基本上 int
= 整数类型和 *int
= 指针类型。
此外:从 pointer
到 int
的转换会导致未定义的行为。
Therefore, why should I type-cast integer to an integer pointer when
assigning it to an integer pointer?
因为标准说:
C99 第 6.5.4 节和 6.5.16.1:
Conversions that involve pointers, other than where permitted by the
constraints of 6.5.16.1, shall be specified by means of an explicit
cast.
和 C++ 5.4 节:
Any type conversion not mentioned below and not explicitly defined by
the user (12.3) is ill-formed.
整数和&
返回的地址有什么区别?
因此,在将整数赋值给整数指针时,为什么要将整数类型转换为整数指针?
整数和指向整数的指针是不同的类型。
- 整数变量保存整数值。
- 指针变量保存地址值。
以你的例子为例:
int value = 5;
int address = &value;
value
是int
. 类型的变量
&value
returns 地址类型int*
address = &value
尝试将int*
分配给int
。
虽然整数可以转换为指针并返回,但这并不意味着地址一定是整数值。
就像您可以将 double
分配给 int
一样,您可以将 int *
分配给 int
。但这不一定是你想要的,这就是编译器警告它的原因。
事实上,除非你的工作非常接近硬件(例如编写驱动程序),否则你不太可能需要在整数和指针之间进行转换。
无需任何转换的正确方法:
int * pointer = &value;
Whats the difference between integer and the address returned by & ?
我认为这个问题已经在评论中得到了解答。不同之处在于这些变量的类型。基本上 int
= 整数类型和 *int
= 指针类型。
此外:从 pointer
到 int
的转换会导致未定义的行为。
Therefore, why should I type-cast integer to an integer pointer when assigning it to an integer pointer?
因为标准说:
C99 第 6.5.4 节和 6.5.16.1:
Conversions that involve pointers, other than where permitted by the constraints of 6.5.16.1, shall be specified by means of an explicit cast.
和 C++ 5.4 节:
Any type conversion not mentioned below and not explicitly defined by the user (12.3) is ill-formed.