首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

生手求教(int *) name[0]和(int *)name的区别

2013-05-02 
新手求教(int *) name[0]和(int *)name的区别新手求教,定义一个以name为名的数组,用cout输出(int *) name[

新手求教(int *) name[0]和(int *)name的区别
新手求教,定义一个以name为名的数组,用cout输出(int *) name[0]为什么结果与(int *)name结果不同?
它们不应该都是表示name数组的第一个元素的地址吗? 数组名
[解决办法]
取地址用& int*是声明用的
[解决办法]
name[0]应该等于*name(即name的值),而不是name(name的地址)。
[解决办法]
应该是&name[0]和name都是第一个元素地址,楼主的(int *)这个是类型转换的吧,有点看不懂,为啥这么用,
[解决办法]

cout<<&name[0]<<endl<<name<<endl;

这两个才表示首地址,输出才是一样的.
[解决办法]
(int *) name[0]与(int *)name前面的(int *)是强制类型转换用的,而不是*解引用。
他们与*name[0]、*name是不一样的含义,楼主理解错了哦。
其实你可以把他们看做name[0]与name。这样你就明白为什么他们的值不一样了吧。
[解决办法]
另外楼主 为什么要这么用(int*)name[0],  这个我试一下就是等价于name[0]啊 就是第一个元素的值.
当然如果name没有初始值,  打印出来的值就不一定了吧.

name 和 (int*)name 应该是等价的,.输出值是一样的.
[解决办法]
name[0]是数组的第一个元素。。name是数组名,也就是数组的首地址,当然不一样。。
(int*)&name[0]才和(int*)name的值一样。。
[解决办法]
引用:
Quote: 引用:

取地址用& int*是声明用的

我用(int *)是强制转换成地址


强制类型转换和取地址的区别是什么你知道吗
[解决办法]
应该是&name[0]和&name是一样的,你那个不怎么 看得懂,是不是类型转换了?
[解决办法]
引用:
Quote: 引用:

(int *) name[0]与(int *)name前面的(int *)是强制类型转换用的,而不是*解引用。
他们与*name[0]、*name是不一样的含义,楼主理解错了哦。
其实你可以把他们看做name[0]与name。这样你就明白为什么他们的值不一样了吧。

我知道是强制类型转换,我把(int *)name[0]想成是应该输出name数组中第一个元素的地址了,话说
(int *)name[0]输出的是个什么东东。。。

我不好说,首先你没告诉我name是一个什么类型的数组,char还是int还是其他?而且name是一维数组还是二维数组?你也没告诉我。暂且当name是这么定义的吧:int name[2]={1,2};那么(int *)name[0]就是name[0],也就是1.
(int *)name输出的是name的首地址。

热点排行