(int*) 在这个程序中有什么意义?

What is the significance of (int*) in this program?

我写了两个程序打印出指针p指向的变量:

第一个节目:

#include <stdio.h>

int main (void){

    int *p;
    int a=5, q;

    p=&a;

    q=*p;
    printf("%d", q);

}

第二个节目:

#include <stdio.h>

int main(void)
{

    int a=5;
    int*p;

    p= (int*)&a;

    printf("%d", *p);

return 0;
}

我的问题:

两个程序都打印 a 的值,即 5。但是,第二个程序使用 p=(int*)&a; 而不是 p=&a;。有人可以告诉我 (int*) 在这里投射的意义吗?

没有意义,这个转换是多余的,不需要。

在您的代码中,aint 类型,pint * 类型。因此,

 p= (int*)&a;

p= &a;

相同,推荐第二个

没用。

a 是一个 int,所以 &a 已经是指向 int.

的指针

无用type casting。就像,

int a = (int) 10 ;

转换是程序员告诉计算机的一种方式,即使计算机认为某物是一种类型,我们也想将其视为另一种类型。

但是这里的转换没有用,因为这里的 a 是一个整数,因此 a 的地址不需要在这里转换为整数指针。

这就是类型转换,告诉编译器分配给指针 p 的值即 &a 是一个整数类型 (int) 但它没有用,因为 &a return 地址是被赋值给变量a,它总是一个整数。