(int *)&a是什么意思?这个语法有些不懂。。

2024-12-15 00:34:27
推荐回答(5个)
回答1:

(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);

}

回答2:

你一定是没有深入理解何为引用。从这个角度看。int*是个类型,是个指向整型数据的指针的类型,那上述语句可以抽象作 <类型>&a,这个抽象是什么意思你肯定懂,比如 typename &a就是定义一个typename类型的引用,因此你的语句的含义就是定义一个指向int*类型的引用。int*要整起来理解,不要断章取义。给你举个例子。int a=10;int* ptr=&a;(int*)&d=ptr;尝试理解吧。

回答3:

先是取地址符号,获得a的地址,然后前面的(int*),对获得地址进行强制类型转换。此时,以a的基地址开始的一段内存空间,可以看作是一个整形数组空间。

回答4:

你这个语法是在函数声明的形参列表还是在语句中的?

如果是在语句中的,就如楼上说的,对a取地址,然后转成int类型的指针。

如果是在函数声明的形参列表里,那说明函数接受一个int类型指针的引用。

比如这样
void test(int*& a)
{
a = new int;
}

回答5:

获得a的地址,对获得地址进行强制类型转换。