(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*)
在这里投射的意义吗?
没有意义,这个转换是多余的,不需要。
在您的代码中,a
是 int
类型,p
是 int *
类型。因此,
p= (int*)&a;
和
p= &a;
相同,推荐第二个
没用。
a
是一个 int
,所以 &a
已经是指向 int
.
的指针
无用type casting
。就像,
int a = (int) 10 ;
转换是程序员告诉计算机的一种方式,即使计算机认为某物是一种类型,我们也想将其视为另一种类型。
但是这里的转换没有用,因为这里的 a 是一个整数,因此 a 的地址不需要在这里转换为整数指针。
这就是类型转换,告诉编译器分配给指针 p 的值即 &a 是一个整数类型 (int) 但它没有用,因为 &a return 地址是被赋值给变量a,它总是一个整数。
我写了两个程序打印出指针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*)
在这里投射的意义吗?
没有意义,这个转换是多余的,不需要。
在您的代码中,a
是 int
类型,p
是 int *
类型。因此,
p= (int*)&a;
和
p= &a;
相同,推荐第二个
没用。
a
是一个 int
,所以 &a
已经是指向 int
.
无用type casting
。就像,
int a = (int) 10 ;
转换是程序员告诉计算机的一种方式,即使计算机认为某物是一种类型,我们也想将其视为另一种类型。
但是这里的转换没有用,因为这里的 a 是一个整数,因此 a 的地址不需要在这里转换为整数指针。
这就是类型转换,告诉编译器分配给指针 p 的值即 &a 是一个整数类型 (int) 但它没有用,因为 &a return 地址是被赋值给变量a,它总是一个整数。