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

时间:2015-06-02 07:38:50

标签: c++ c pointers casting

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

第一个程序:

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; } 的{​​{1}}值。但是,第二个程序使用a而不是5。有人可以告诉我p=(int*)&a;在这里施展的重要性吗?

5 个答案:

答案 0 :(得分:3)

没有任何意义,相反,这种演员是多余的,不是必需的。

在您的代码中,a的类型为intp的类型为int *。因此,

 p= (int*)&a;

p= &a;

是相同的,建议使用第二个。

答案 1 :(得分:3)

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

但是这里的强制转换是没用的,因为这里是一个整数,因此对于整数指针,这里的地址不需要转换。

答案 2 :(得分:2)

没用。

aint,因此&a已经是指向int的指针。

答案 3 :(得分:1)

无用地使用type casting。就像,

int a = (int) 10 ;

答案 4 :(得分:0)

这是类型转换,告诉编译器分配给指针p的值是&amp; a是一个整数类型(int)但是它没有用作&amp; a返回分配的地址到变量a,它总是一个整数。