将指针分配给整数

use*_*997 5 c pointers assignment-operator

我可以将指针分配给整数变量吗?如下所示。

int *pointer;
int array1[25];
int addressOfArray;

pointer = &array1[0];

addressOfArray = pointer;
Run Code Online (Sandbox Code Playgroud)

有可能这样做吗?

Joh*_*ode 4

并非没有明确的强制转换,即

addressOfArray = (int) pointer;
Run Code Online (Sandbox Code Playgroud)

还有这个警告:

6.3.2.3 指针
...
6 任何指针类型都可以转换为整数类型。除非前面指定,否则结果是实现定义的。如果结果不能以整数类型表示,则行为未定义。结果不必在任何整数类型的值范围内。

因此,不能保证结果是有意义的整数值。

  • 最好使用类型“uintptr_t”而不是“int”,因为它具有更少的实现定义行为。 (3认同)