news 2026/11/4 2:28:19

C语言:动态数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言:动态数组

前言

本文面向编程零基础的小白,简单了解C语言中动态数组的用法。

正文

数据结构:数组(动态数组\列表),链表(双向链表/环形链表),堆/栈,队列
数组:数组长度一旦确定不可更改(连续的内存)
动态数组:可以根据数据的增加动态扩容
实现对数据的增/删/查/改

首先给定一块区域存放数据,再用指针保存内存,便于后面实现动态数组功能

//初始数组 int arr[] = {1, 2, 3, 4, 5}; // int * arrP = &arr[0]; int * arrP = arr; //保存第一个元素的内存地址 int len = 5; //数组长度 int size = 5; //记录有效数据个数

把所需功能的代码分别写出:
1.增
如果需要增加数据,在增加之前要确认内存是否需要扩容(即有效数据个数是否等于内存长度)如果不用扩容,则直接将增加的数据放在有效数据最后一位的下标后

int data = 0; scanf("%d", &data); arrP[size] = data; size++;

如果需要扩容,则先扩容再增加数据

if (size == len) { //根据原数组长度2陪扩容(开辟新的内存空间,以字节为单位) int nLen = len * 2; int *nArrP = (int *)malloc(nLen *sizeof(int)); //复制原数组的数据 for (int i = 0; i < len; i++) { nArrP[i] = arrP[i]; } len = nLen; arrP = nArrP; //更新内存地址 } //添加数据到末尾 arrP[size] = data; size++;

2.删
删除数据可以分为几种情况:指定位置删除(31)和指定数据删除(32)
写一个判断语句选择其一

int index; scanf("%d", &index); if (index == 31) { }else if(index == 32){ }

指定位置删除(31):

int data = 0; scanf("%d", &data); for (int i = data; i < size - 1 ; i++) { arrP[i] = arrP[i + 1];//从输入的下标处开始从后往前置换数据 } size--;

指定数据删除(32):

int shu; scanf("%d", &shu); for (int i = 0; i < size; i++) { if (arrP[i] == shu) { for (int j = i; j < size; j++) { arrP[i] = arrP[i + 1]; } size--;

3.查
输入指定下标并输出对应数据即可

int data; scanf("%d", &data); printf("%d\n", arrP[data]);

4.改
输入指定下标,再将新数据覆盖原数据即可

int data; int index; scanf("%d", &data); printf("请输入数据:\n"); scanf("%d", &index); arrP[data] = index;

要共同实现这些功能,可以用分支语句按情况写入各个分支

printf("\n===== 自定义动态数组 ===== \n"); printf("===== 1.添加数据 ===== \n"); printf("===== 2.删除数据 ===== \n"); printf("===== 3.插入数据 ===== \n"); printf("===== 4.查找数据 ===== \n"); printf("===== 输入编号: ===== \n"); int id = 0; scanf("%d", &id); switch (id) { case 1: { } break; case 2{ } ...

最后打印数组信息

printf("数组中数据:"); for (int i = 0; i < size; i++) { printf("%d ", arrP[i]);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/4 2:26:27

信息检索报告数字经济赋能城市低碳治理的路径研究——基于“传统数据库 + 生成式人工智能”双轮驱动的检索实践 绪论+概念内涵与治理现状调查

1 绪论1.1 研究背景在全球数字化与绿色化两大转型交汇的背景下&#xff0c;数字经济已从一种新兴经济形态成长为国民经济的重要组成部分&#xff0c;而低碳治理则因气候变化的刚性约束上升为国家战略议题。降碳、减污、扩绿、增长被要求协同推进。城市是人口、产业与能源消费…

作者头像 李华
网站建设 2026/11/4 2:25:20

给AI接股票数据源,第一轮验收什么?用悟道MCP跑一份检查报告

我现在给股票Agent接数据&#xff0c;第一件事不是让它写复盘&#xff0c;而是让它证明自己刚才拿到了什么。 “调用成功”很容易让人放下戒心。但连得上和用得对&#xff0c;中间还隔着日期、字段、单位和缺失处理。这次我用悟道MCP做了一轮小样本检查&#xff0c;把能确认的…

作者头像 李华
网站建设 2026/11/4 2:20:16

HsMod 炉石插件上手:50 余项功能,皮肤镀金到战棋 MMR 一次配好

HsMod 炉石插件上手&#xff1a;50 余项功能&#xff0c;皮肤镀金到战棋 MMR 一次配好 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod 是一个基于 BepInEx 的炉石传说本地增强插件&a…

作者头像 李华