新手求教(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的值一样。。
[解决办法]
强制类型转换和取地址的区别是什么你知道吗
[解决办法]
应该是&name[0]和&name是一样的,你那个不怎么 看得懂,是不是类型转换了?
[解决办法]
(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的首地址。