C++数组名退化指针实例

C++基础知识之数组&指针&数组名退化指针实例

​ 在C/C++中,数组和指针是相互关联又有区别的两个概念。当我们声明一个数组时,其数组的名字也是一个指针,该指针指向数组的第一个元素。我们可以用一个指针来访问数组。

​ 但是,需要注意的是,在C/C++中没有记录数组的大小,因此用指针访问数组中的元素时,我们要确保没有超出数组的边界。见如下代码:

int GetSize(int data[])
{
    return sizeof(data);
}
int main()
{
    int data1[] = {1, 2, 3, 4, 5};
    int size1 = sizeof(data1);	//20

    int *data2 = data1;
    int size2 = sizeof(data2);	//8

    int size3 = GetSize(data1); //8

    cout << size1 << " " << size2 << " " << size3 << endl;
    //20 8 8
}


​ 上面输出为 "20 8 8"。data1是一个数组, sizeof(data1)是求数组的大小,这个数组包含5个int型的证书,每个整数占4字节,所以总共是20字节。data2声明为指针,尽管它指向了数组data1的第一个数字,但它的本质仍然为一个指针,由于本机为64位系统,所以对任何指针求sizeof(),得到的结果为8。此外,在C/C++中,当数组作为函数的参数进行传递时, 数组就会自动退化为同类型的指针,所以说sizeof(size3)的结果为8。

posted @ 2018-03-13 16:14  一棵球和一枝猪  阅读(354)  评论(0编辑  收藏  举报