• 【转】动态数组


    数组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时具有改变数组大小的能力。

    动态数组就可以在任何时候改变大小。

    通俗的说静态数组就是在定义数组的时候,由操作系统分配的空间,比如
    int a[10];
    这就是在定义时由系统给你分配了10个int类型的空间,这个空间是可以初始化的,比如
    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    那么在这个定义之后,系统会首先分配10个int类型的存储空间,然后把大括号里面的数字分别的,按顺序放到这10个空间里。你所做的只是写这么一句,而数组赋值的操作就由系统完成了。当然,初始化与否看你的需求,初始化不是强制性操作,想初始化就初始化,不想也没问题,还是上面的例子继续:
    int a[10];
    这里定义了,但是没初始化,这没有任何问题,以后你可以自己往里面赋值,比如
    a[1] = 8;
    a[5] = 3;
    或者
    for(int i = 0; i < 10; i++)
        a[i] = i;
    等等

    对于动态数组,不能被初始化,因为动态数组在定义时只是个指针,比如
    int *a;
    这里变量a只是个指向int类型的指针,而不是数组。动态分配有10个int类型元素的数组,如下:
    a = (int) malloc(10*sizeof(int));
    很明显,指针a在定义的时候不能被初始化,比如这样写就是错误的:
    int *a = {1,2,3,4,5,6,7,8,9,10}; /* 错误! */
    因为a是只有4个字节的指针,没有可用的存储空间给需要初始化的变量。

  • 相关阅读:
    php实现qq授权登录
    lnmp环境下上传文件过大出现 <服务器IO错误> 问题解决方案
    matpb画图_折线图.ipynb
    垂直条形图——plot.bar
    将博客搬至CSDN
    pandas的函数应用二——排序
    pandas的函数应用一
    pandas的数据对齐
    将一个二维数组的行和列分别进行逆向
    numpy——深拷贝和浅拷贝和不拷贝
  • 原文地址:https://www.cnblogs.com/whyaiw/p/3013182.html
Copyright © 2020-2023  润新知