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

如题所述

(int *)&a是什么意思还真不清楚,(int )*&a是强制转换

#include <stdio.h>

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

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-25
你一定是没有深入理解何为引用。从这个角度看。int*是个类型,是个指向整型数据的指针的类型,那上述语句可以抽象作 <类型>&a,这个抽象是什么意思你肯定懂,比如 typename &a就是定义一个typename类型的引用,因此你的语句的含义就是定义一个指向int*类型的引用。int*要整起来理解,不要断章取义。给你举个例子。int a=10;int* ptr=&a;(int*)&d=ptr;尝试理解吧。
第2个回答  推荐于2017-11-23
先是取地址符号,获得a的地址,然后前面的(int*),对获得地址进行强制类型转换。此时,以a的基地址开始的一段内存空间,可以看作是一个整形数组空间。本回答被提问者采纳
第3个回答  2011-01-25
你这个语法是在函数声明的形参列表还是在语句中的?

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

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

比如这样
void test(int*& a)
{
a = new int;
}
第4个回答  2011-01-25
获得a的地址,对获得地址进行强制类型转换。

(int *)&a是什么意思?这个语法有些不懂。。
(int *)&a是什么意思还真不清楚,(int )*&a是强制转换 include <stdio.h> 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);} ...

(数据类型 *)&结构变量名 。如char a;(int *)&a这句话是什么意思
char a的意思是先定义一个字符a,&a意思是取字符a的地址,前面加上(int *)是把该地址强制类型转换成整型指针,因为指针代表的就是地址值。这里解释一下“(数据类型 *)&结构变量名”。因为(数据类型)代表强制类型转换,括号里面加了“*”,就代表将其强制类型转换为指针了,因为在结构变量名前...

C++中,int *& 与 int &* 的区别、意义及使用
int *&a 指向 int 类型的指针 的引用 int &*a 可以解释为,int类型引用 的指针(C++不允许声明 指向引用的指针)。const 是限定符 const int a; \/\/const 限定 int,即 a 是一个变量,类型为int的常量。(所以,int常量不可修改,所以a也不可修改)int const a; \/\/ const 限定 a,即 a ...

C语言中(int*)&a是否等价于(int)a?为什么要用前者?拜托了各位 谢谢
(int*)&a表示将&a强制转换为是指向整型的指针。(int)a表示将a强制转换为整型值。这两种状况,要根据实际情况进行分析使用。也许你看到的需要使用前者,但并不表示在其他情况下后者也不能使用。

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

int *p=(int *)&a;是什么意思啊?
这是因为如果不加(int*)进行强制转换,在C++编译器中是无法通过编译的。a加了const表示常量,告诉编译器这不能修改值,而如果进行int *p = &a;这就可能通过p修改a的值,C++编译器会阻止你这么做,编译报错。加了(int*)&a编译器就不管你了,它的检查工作是完成了但留下了隐患。运行这个代码你会...

*(int*)(&a)=10 怎么理解呢?
(int*)(&a) =10 把10放到指针指向的内存单元里。最外围的*代表最终内存单元具体存放数据内容。注意:本例回答中没有涉及"指针变量"。注意了解区分什么是指针变量,什么是指针,什么是指针指向的具体内存数据。它们都是用什么样的语法来表示。很多人很多书 弄的很乱说的很随意,所以很多人学了很久...

(int &)a是什么意思
C++的语法,将a强制转换为int类型的引用,举个例子吧,比如:short a;现在想用int指针强制转换改变a的值,在c中可以:*(int *)&a = 0;c++中就可以直接(int &)a = 0;

p = (int *)&a[0]; t = (int *)&a[9]; 这是什么意思,c语言中的。
p = (int *)&a[0];a是一个数组,a[0]表示数组第一个元素,&a[0]表示数组第一个元素在内存中的地址。(int *)是强制转换成int型指针类型。所以这个赋值语句是取a[0]在内存中的地址,并且把这个地址强制转换成int型指针值,赋给p。t = (int *)&a[9];和上面的完全类似。

(int*)*(int*)&a;
(int*)&a就是a。&a类型就是int*所以转换(int*)没有效果,*(int*)&a等价于a。所以(int*)*(int*)&a就是(int*)a,也就是把a的值转换成int指针。

相似回答