下面两个赋值有什么区别?
int main()
{
int a=10;
int* p= &a;
int* q = (int*)p; <-------------------------
int* r = (int*)&p; <-------------------------
}
我对这两个声明的行为感到非常困惑。
我什么时候应该使用一个而不是另一个?
最佳答案
int* q = (int*)p;
是正确的,尽管过于冗长。 int* q = p
就足够了。 q
和p
都是int
指针。
int* r = (int*)&p;
是不正确的(逻辑上,虽然它可能编译),因为 &p
是一个 int**
但 r
是一个 int *
。我想不出您会想要这个的情况。
关于将指针及其地址转换为整数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11450899/