• 【C++】数组


    💦数组

    数组是一个变量,由数据类型相同的一组元素组成,是内存中的一串连续的空间。

    💦数组结构和基本要素

    • 标识符:数组名称,用于区分不同的数组
    • 数组元素:向数组中存放的数据
    • 元素下标:对数组元素进行编号
    • 元素类型:数据元素的数据类型

    💦语法

    datatype array_name[size],其中size不允许是变量

    #define和const的区别
    定义:为变量/数组分配内存空间,也可以为变量/数组指定初值,定义只有一个
    声明:用于向程序程序表明变量/数组的类型和名字,定义也是声明
    在这里插入图片描述

    💦初始化一维数组

    int nums[2]={1,2};✔ 后面的元素个数和声明的一致
    int nums[2]={1};✔ 后面未初始化的元素,初始值为0
    int nums[]={1,2};✔ 元素个数为2
    int nums[]={};✘元素个数未知

    C++11中的列表初始化新增了一些功能:
    1.省略=号,即int nums[] {1,2};
    2.大括号可为空,所有元素置零,float nums[100]{};(如果不进行初始化,那么每个元素的值是不可控的)

    💦数组操作实例

    //打印斐波那契数组并输出和以及平均值
    
    #include <iostream>
    using namespace std;
    typedef long long ll;
    int main()
    {
        const int N = 20;
        ll nums[N];
        nums[0] = 0;
        nums[1] = 1;
        ll sum = 0;
        long double avg;
        for (int i = 2; i < N; i++)
        {
            nums[i] = nums[i - 1] + nums[i - 2];
        }
        for (int i = 0; i < N; i++)
        {
            cout << nums[i] << ",";
            sum += nums[i];
        }
        cout << endl;
        avg = sum / 1.0 / N;
        cout << "Fibonacci的和为:" << sum << ",平均值为:" << avg << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    //生成指定区间内的随机数
    #include <iostream>
    #include <ctime>
    using namespace std;
    int main()
    {
        srand(time(NULL));
        const int N = 10;
    	int nums[N];
    	for (int i = 0; i < N; i++)
    	{
    		nums[i] = rand() % 100; //输出0-99之间的随机数
    		cout << nums[i] << ",";
    	}
    	cout << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    关于time()和clock()的区别:

    //time()的函数原型
    //返回格林尼治时间(GMT)为标准,1970-1-1 0:0:0到此时经历的秒数
    //time_t实际上是一个长整型:long long / __int64
    time_t time(time_t * timer);
    
    • 1
    • 2
    • 3
    • 4
    //clock()的函数原型
    //返回进程启动到调用该函数经理的CPU时钟计时单位-以毫秒为单位
    //一般用于计算两次操作的时间间隔
    clock_t clock(void);
    
    • 1
    • 2
    • 3
    • 4
    //for循环简化
    #include <iostream>
    using namespace std;
    int main()
    {
        double nums[] = { 11, 12, 13, 14, 15, 16 };
        int len = sizeof(nums) / sizeof(nums[0]);
    	for (int i = 0; i < len; i++)
    	{
    		cout << nums[i] << endl;
    	}
    	for (auto num:nums)
    	{
    		cout << num << endl;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    #include <iostream>
    using namespace std;
    int main()
    {
        double nums[]{ 1,2,3,4,5,6,7 };
        //方案1:直接进行数组名的赋值——数组名实际上是数组的首地址
        //其实不是真正意义上复制
        //double* copy_nums = nums;
        
        //方案2:数组元素进行逐个复制
        const int SIZE_NUMS = sizeof(nums) / sizeof(nums[0]);
        double copy_nums[SIZE_NUMS];
        for (int i = 0; i < SIZE_NUMS; i++)
        {
            copy_nums[i] = nums[i];
        }
    
        //方案3:使用memcpy_s函数
        //memcpy_s是memory copy safe的缩写,安全内存复制
        double copy_nums1[SIZE_NUMS];
        memcpy_s(
            copy_nums1, //要复制到的目标数组
            SIZE_NUMS * sizeof(double),   //复制到目标数组的字节数
            nums,   //复制的源数组
            SIZE_NUMS * sizeof(double)    //要复制的字节数
        );
        for (int i = 0; i < SIZE_NUMS; i++)
        {
            cout << copy_nums[i] << ',' << copy_nums1[i] << endl;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    在这里插入图片描述

  • 相关阅读:
    yolov5中pt模型转onnx模型报错
    【Vue】Vue-Router 路由的理解和使用(1)
    Ubuntu 22.04 开机闪logo后卡在/dev/sda3: clean
    国际经济学名词解释
    LeetCode 141. 环形链表 和 142. 环形链表 II
    【python】删除远程服务器的某些文件
    django+drf_haystack+elasticsearch+ik+高亮显示
    Linux 文件目录指令(常见)
    TCP三次握手四次挥手深入
    【学习资源】理解数学和热爱数学
  • 原文地址:https://blog.csdn.net/qq_36477513/article/details/125258681