C指针转换2

来源:百度知道 编辑:UC知道 时间:2024/05/25 18:10:45
#include <stdio.h>

int main(void)
{
int *a,a1=3;
float *b,b1=9;
a = ( float * )a;
a=&b1;
printf("b1 is: %f\n ",*a);
a=&a1;
printf("a1 is %d\n",*a);
getch();
return 0;
}
为什么会第一次输出有问题????
第一次输出为什么输出的是0???
我的是用VC6.0编译的,可以通过!

你指针已经声明类型了,就不能把不同类型的指针赋值,你这程序编译都通不过呀。
如果想要指针转换,应该声明void *指针。

因为a的类型是 int*的
输出float类型的变量必然是出现错误
然而第二次输出就正常了

什么类型的指针指向什么类型的变量!

类型无法转换!
可以这样写:
a = a;
a=(int *)&b1;