+ -
当前位置:首页 → 问答吧 → (int*)a[0]和&a[0]有啥区别

(int*)a[0]和&a[0]有啥区别

时间:2011-12-15

来源:互联网

a是一个数组名 那么(int*)a[0]和&a[0]有啥区别?

作者: nnnnnnnn1111   发布时间: 2011-12-15

区别是 
假设是int a[5];
(int*)a[0];相当于: int tmp = ar[0]; (int*)temp;//后面一句。将第一个元素的值,强制转换成指针类型。指向未知内存。

&a[0];是第一个元素的地址。

作者: mingliang1212   发布时间: 2011-12-15

&a[0] 取a数组的首地址 也就是第一个元素的地址 类型为该数组类型的指针
(int*)&a[0] 一样,把指针强制转换成int指针 就是说用那个指针的话会把指向地址解析成int型

例子:

C/C++ code

int main()
{
    char chArray[5];
    chArray[4]=0;

    int *p=(int*)chArray;
    *p=0x31323334;

    cout<<chArray;
}

作者: sryan   发布时间: 2011-12-15

引用 2 楼 sryan 的回复:

&amp;a[0] 取a数组的首地址 也就是第一个元素的地址 类型为该数组类型的指针
(int*)&amp;a[0] 一样,把指针强制转换成int指针 就是说用那个指针的话会把指向地址解析成int型

例子:

C/C++ code

int main()
{
char chArray[5];
chArray[4]=0;

int *p=(int*)chA……


我发现我看错题目了。。。怨念。。。

是(int*)a[0]啊,就是把a[0]的值强转为int指针 假如是指针数组之类的还行 不然要出错的

作者: sryan   发布时间: 2011-12-15

a是一个数组名 那么(int*)a[0]和&a[0]有啥区别? 
要理解操作符的优先级,
(int*)a[0] 等价于 (int *)(a[0])
&a[0] 等价于 &(a[0])

作者: seucs   发布时间: 2011-12-15