我写了两个程序,打印出指针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;
在这里施展的重要性吗?
答案 0 :(得分:3)
没有任何意义,相反,这种演员是多余的,不是必需的。
在您的代码中,a
的类型为int
,p
的类型为int *
。因此,
p= (int*)&a;
和
p= &a;
是相同的,建议使用第二个。
答案 1 :(得分:3)
Casting是程序员告诉计算机的一种方式,即使计算机认为某种类型是某种类型,我们也希望将其视为另一种类型。
但是这里的强制转换是没用的,因为这里是一个整数,因此对于整数指针,这里的地址不需要转换。
答案 2 :(得分:2)
没用。
a
是int
,因此&a
已经是指向int
的指针。
答案 3 :(得分:1)
无用地使用type casting
。就像,
int a = (int) 10 ;
答案 4 :(得分:0)
这是类型转换,告诉编译器分配给指针p的值是&amp; a是一个整数类型(int)但是它没有用作&amp; a返回分配的地址到变量a,它总是一个整数。