动态数组是啥

动态数组是啥动态数组是什么?什么情况用动态数组?长度可变那么如何定义呢?

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

动态数组是什么?

当小白抱着这个问题去问大佬的时候,80%的回答就是:动态数组就是可以变化长度的数组,就这么简单,没啥难度。

于是小白心中就容易产生一个概念,动态数组就是长度可以变化的数组,长度可以任意变,那什么时候变、怎么变,,,额 不想了,刚问完说懂了的,再问也不合适,下次代码碰到再说吧。。。

70%你会忘记这个问题,25%你会使用增加删除操作更灵活的集合(ArrayList),5%的可能你会再去问动态数组的概念,掌握住它。所以,干脆在第一次查的时候就搞明白这些问题:

1.什么是动态数组

2.动态数组怎么定义

3.动态数组怎么变化的

4.举个例子让我看看数组和动态数组的区别

那么我们一个一个来看一下:

1.什么是动态数组

动态数组是指在声明时没有确定数组大小的数组,即忽略圆括号中的x下标;当要用它时,可随时用ReDim语句重新指出数组的大小。使用动态数组的优点是可以根据用户需要,有效利用存储空间。

2.创建动态数组  &&  3.动态数组怎么变化的


int main(){
    int arrLen;  // 数组长度
    int *array;  // 数组指针
    int i;  // 数组下标
    printf("输入数组长度:");
    scanf("%d", &arrLen);
    
    // 动态分配内存空间,如果失败就退出程序
    array = (int*)malloc( arrLen*sizeof(int) );
    if(!array){
        printf("创建数组失败!\n");
        exit(1); 
    }
    // 向内存中写入数据
    for(i=0; i<arrLen; i++){
        array[i] = i+1;
    }
    
    // 循环输出数组元素
    for(i=0; i<arrLen; i++){
        printf("%d  ", array[i]);
    }
    
    printf("\n");
    free(array); 
    
    system("pause");
    return 0;
}

Jetbrains全家桶1年46,售后保障稳定

4.举个栗子

一个最简单最简单的小程序,输入几个数,程序找出其中的最大值返回给用户。

理一下思路,将输入的数字存入一个数组,循环遍历数组,比较选出最大值max,循环结束后返回max值,但现在的问题是数组建多大合适?用户要输入多少个数,不知道,定义个10?万一输入11个呢,那定义个99999肯定够了吧,够是够了 但是要浪费多大空间?

那么我们怎么建数组呢,动态数组:·

int m;
int *array=new int [m];

用户输入多少个,我建多大。

以上

太阳尚远 但必有太阳

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234559.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用python画爱心的代码-Python一行代码画个爱心案例「建议收藏」

    用python画爱心的代码-Python一行代码画个爱心案例「建议收藏」昨天六一儿童节,大小朋友都过节了,真好!“人生易老天难老”,这很现实,读这句诗不期然就有一种沧桑的感觉。而要人生幸福,是需要保持一颗童心的。《三字经》开篇说“人之初,性本善”,童心就是天真,单纯而无邪。我们的身体可以老去,但可以让我们的心理年龄永远年轻,人不思老,则老将不至。拥有一颗童心,就能始终对这个世界好奇,充满想象力和创造力。拥有一颗童心,就能让我们有所“畏惧”,有所顾忌,对这个世界时刻保持…

    2022年9月6日
    8
  • acwing-1183. 电力(割点Tarjan)

    acwing-1183. 电力(割点Tarjan)给定一个由 n 个点 m 条边构成的无向图,请你求出该图删除一个点之后,连通块最多有多少。输入格式输入包含多组数据。每组数据第一行包含两个整数 n,m。接下来 m 行,每行包含两个整数 a,b,表示 a,b 两点之间有边连接。数据保证无重边。点的编号从 0 到 n−1。读入以一行 0 0 结束。输出格式每组数据输出一个结果,占一行,表示连通块的最大数量。数据范围1≤n≤10000,0≤m≤15000,0≤a,b<n输入样例:3 30 10 22 14 20 1

    2022年8月9日
    4
  • ffmpeg的安装_一锁三抽屉安装视频

    ffmpeg的安装_一锁三抽屉安装视频1.FFmpeg介绍FFmpeg是一个完整的、跨平台的解决方案,用于记录、转换和流化音/视频。FFmpeg采用LGPL或GPL许可证,提供了录制、转换及流化音/视频的完整解决方案。其包含了非常先进的音/视频编解码库libavcodec。FFmpeg是在Linux平台下开发的但是它同样也可以在其他操作系统环境中编译运行,包扩Windows、MacOS等系统。这个项目最早是由FabriceBellard发起的,在2004年至2015年由MichaelNiedermay

    2022年9月13日
    2
  • 三阶贝塞尔曲线_三阶贝塞尔曲线公式

    三阶贝塞尔曲线_三阶贝塞尔曲线公式目的:使用L-Edit绘制DC耦合器版图其中的弯曲部分就是基于贝塞尔曲线画出来的。长这样↓使用语言:C语言写了两个版本。一个是基于L-edit平台的版本,一个是基于VS平台版本(我的是2017版)。这里说下VS的版本,不过VS里我就没有费心画出来了,只是列出了坐标来验证我L-Edit里面版图的正确性。贝塞尔曲线是个啥可参考这篇:点击打开链接简言之我们要画的三阶贝塞尔曲线就是通过四个点来拟合一条曲线…

    2022年9月19日
    3
  • Redis过期键的删除策略[通俗易懂]

    文章目录立即删除惰性删除定时删除Redis使用的策略Redis中有个设置时间过期的功能,即对存储在redis数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项目中的token或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。我们setkey的时候,都可以给一个expir…

    2022年4月10日
    57
  • mysql workbench怎么改密码_mysql notifier

    mysql workbench怎么改密码_mysql notifier更改MySQL用户密码MySQL用户是一条记录,其中包含登录信息,帐户特权以及MySQL帐户访问和管理数据库的主机信息。登录信息包括用户名和密码。在某些情况下,需要更改MySQL数据库中的用户密码。要更改任何用户帐户的密码,必须记住以下信息:您要更改的用户帐户的详细信息。用户要更改其密码的应用程序。如果您在不更改应用程序连接字符串的情况下重置了用户帐户密码,则该应用程序将无法与数据库服务器连接。M…

    2022年8月12日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号