zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    S3C2440的LCD虚拟显示测试
    arm-linux-gcc编译器测试
    韦东山教程ARM的时钟设置出现的问题及其解决方法
    程序在nor flash中真的可以运行吗?
    存储器的速度
    程序测试的方法
    对编程的一些思考

    [算法题] 字节流解析
    [C/C++]函数指针和函数分发表
  • 原文地址:https://www.cnblogs.com/chunzhulovefeiyue/p/8557982.html
Copyright © 2011-2022 走看看