news 2026/10/27 19:09:30

数组基本知识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数组基本知识

数组的定义

数组是由同一类型元素组成的集合。但元素个数不为0,且类型相同。

一维数组

type name[常量值],type为数组的类型,name为数组的名字,常量值表示数组中元素的个数,常量值不能为零。

初始化

数组的初始化用{}来表示,例如 int gtt[5]={1,2,3,4,5}。如果初始化的元素个数小于常量值,计算机会用0代替。如果初始化的元素个数大于常量值,计算机会乱码,因为它识别不了。但常量值可以省略,计算机会根据元素的个数来推断常量值大小。

  • 字符初始化有所不同

    字符可以用"“,arr2与arr1不同是因为字符串默认有”\0",这为结束符的标志。arr2里面的元素是单个字符,计算机会推测还没有结束,便一直打印下去。如果加上"\0"便会与arr1相同。
  • 用sizeof与strlen
    sizeof计算操作符内存的大小,单位字节。不关注内存中的数据。
    计算数组所占内存空间大小为类型大小乘上常量值。
    strlen是库函数,有头文件string.h。求字符串长度,统计"\0"前的字符,如果没有"\0"则可能会越界。

使用

[]为下标引用操作符,可用来访问数组。

下标从0开始,可用循环来访问数组的所有下标,
例如:
#include <stdio.h>
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int i = 0;
for(i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}

  • 数组在内存中是连续存放的。

二维数组

  • 二维数组以上称为多维数组
    type name[常量值1][常量值2],type为类型,name为数组的名字。常量值1为数组的行,常量值2为数组的列。元素个数为常量值1*常量值2。

初始化

与一维数组几乎一致,但数组的列不可以省略。

使用

下标操作符也为[],但列和行都从0开始,例如

  • 输入与输出
    可以用循环来插入数组的元素,也可以用循环来访问数组元素。访问时要让行与列都初始化。
    例如
    #include <stdio.h>
    int main()
    {
    int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
    int i = 0;//遍历⾏
    //输⼊
    for(i = 0; i < 3; i++) //产⽣⾏号
    {
    int j = 0;
    for(j = 0; j < 5; j++) //产⽣列号
    {
    scanf(“%d”, &arr[i][j]); //输⼊数据
    }
    }
    //输出
    for(i = 0; i < 3; i++) //产⽣⾏号
    {
    int j = 0;
    for(j = 0; j < 5; j++) //产⽣列号
    {
    printf(“%d “, arr[i][j]); //输出数据
    }
    printf(”\n”);
    }
    return 0;
    }
  • 二维数组中每个元素都是连续的。

变长数组

变长数组不能初始化,只有在运行的时候才知道长度,帮助程序员不用估计数组长度,可以改变数组的常量。
例如:
int a;
scanf(“%a”,&a);
int arr[a];

  • C99才承认这个写法
  • VS2026想支持这个写法要安装clang
  • gcc可以
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 19:08:56

Gradle 8.6 安装配置与 wrapper 落地:JDK、缓存和常见报错排查

简介&#xff1a;Gradle 8.6 完整分发包&#xff0c;面向 Java、Android 及 JVM 生态开发者、构建工程师与插件作者&#xff0c;可用于本地安装、离线部署、构建环境升级&#xff0c;也适合研究构建自动化实现。压缩包共 2000 个文件&#xff0c;约 209.99MB&#xff0c;以 196…

作者头像 李华
网站建设 2026/10/27 19:08:09

PHP实现DNS解析的技术原理与实战应用

1. PHP实现DNS解析的核心价值与应用场景在Web开发中&#xff0c;DNS解析是网络通信的基础环节。PHP作为服务端脚本语言&#xff0c;直接处理DNS查询的需求主要出现在以下典型场景&#xff1a;批量域名检测工具开发&#xff08;检查大量域名的解析状态&#xff09;自定义CDN调度…

作者头像 李华
网站建设 2026/10/27 19:08:06

Oracle 19c 升级时区版本至42解决ORA-01882错误

简介&#xff1a;本资源聚焦Oracle 19c数据库时区版本升级&#xff08;32→42&#xff09;的核心实践&#xff0c;面向DBA、数据库运维工程师及参与跨时区数据迁移的技术人员&#xff0c;专门解决数据泵&#xff08;EXPDP/IMPDP&#xff09;导入含TSTZ&#xff08;TIMESTAMP WI…

作者头像 李华
网站建设 2026/10/27 19:07:29

libcurl 源码编译实战:跨平台构建与避坑指南

简介&#xff1a;这份资源面向需要在多平台上构建网络通信能力的开发者&#xff0c;尤其是涉及 Linux、macOS、iOS、Android 与 Windows 交叉编译场景的中高级工程师。包内提供 libcurl 7.74.0 源码压缩包、iOS 平台编译脚本及说明文档&#xff0c;帮助读者解决不同系统下配置、…

作者头像 李华
网站建设 2026/10/27 19:07:27

FFmpeg+Whisper:双人联动长录像批量切片与字幕压制

这次要处理的对象&#xff0c;不是某个带权重文件的模型&#xff0c;也不是一个能一键部署的开源项目&#xff0c;而是一条非常具体、也非常典型的内容生产链路&#xff1a;围绕一场双人联动内容做二次加工。标题里的“南町&#xff1a;我们约定了你却没有履行&#xff01;花礼…

作者头像 李华
网站建设 2026/10/27 19:07:10

中小项目避免过度设计:并发模型、连接池与缓存实战

先把话说在前面&#xff1a;这篇文章不聊感情话题&#xff0c;聊的是工程里一种跟"怕结不了婚"性质很像的错觉——总觉得自己手上这套系统明天就会被流量冲垮&#xff0c;于是提前把能上的复杂方案全上一遍&#xff1a;分库分表、消息队列、微服务拆分、多级缓存&…

作者头像 李华