(int *)&a是什么意思还真不清楚,(int )*&a是强制转换
#include
void main()
{
double a=10.01;
printf("&a is %d\n",&a);
printf("*&a is %lf\n",*&a);
printf("(int)*&a is %d\n",(int)*&a);
printf("(int*)&a is %d\n",(int*)&a);
}
你一定是没有深入理解何为引用。从这个角度看。int*是个类型,是个指向整型数据的指针的类型,那上述语句可以抽象作 <类型>&a,这个抽象是什么意思你肯定懂,比如 typename &a就是定义一个typename类型的引用,因此你的语句的含义就是定义一个指向int*类型的引用。int*要整起来理解,不要断章取义。给你举个例子。int a=10;int* ptr=&a;(int*)&d=ptr;尝试理解吧。
先是取地址符号,获得a的地址,然后前面的(int*),对获得地址进行强制类型转换。此时,以a的基地址开始的一段内存空间,可以看作是一个整形数组空间。
你这个语法是在函数声明的形参列表还是在语句中的?
如果是在语句中的,就如楼上说的,对a取地址,然后转成int类型的指针。
如果是在函数声明的形参列表里,那说明函数接受一个int类型指针的引用。
比如这样
void test(int*& a)
{
a = new int;
}
获得a的地址,对获得地址进行强制类型转换。