C语言04--数组超详解

1.基本概念

  • 逻辑:一次性定义多个相同类型的变量,并存储到一片连续的内存中
  • 语法:
数据类型    数组名字    [ 数据的量 ] ;
  • 示例:
int a[5];
int Num ;
  • 语法释义:
    • a 是数组名,即这片连续内存的名称
    • [5] 代表这片连续内存总共分成5个相等的格子,每个格子称为数组的元素
    • int 代表每个元素的类型,可以是任意基本类型,也可以是组合类型,甚至可以是数组
  • 初始化:在定义的时候赋值,称为初始化
// 正常初始化
int a[5] = {100,200,300,400,500};int a[5] = {100,200,300,400,500,600}; // 错误,越界了
int a[ ] = {100,200,300}; // OK,自动根据初始化列表分配数组元素个数
int a[5] = {100,200,300}; // OK,只初始化数组元素的一部分

数组的真实存储

2.数组元素的引用

  • 存储模式:一片连续的内存,按数据类型分割成若干相同大小的格子
  • 元素下标:距离数组入口位置的偏移量

3.示例:

int a[5]; // 有效的下标范围是 0 ~ 4
a[0] = 1;
a[1] = 66;
a[2] = 21;
a[3] = 4;
a[4] = 934;a[5] = 62; // 错误,越界了
a    = 10; // 错误,不可对数组名赋值 

注意:

数组在定义的时候必须确定大小,而确定大小的方式有两种:

    • 直接在 [ ] 中括号内写上元素的数量, 哪怕是 0 也没有问题
      • 当 [ ] 中括号内没有写任何大小的时候, 对数组进行初始化,编译器则会根据初始化的数量来确定数组大小

4.字符数组

  • 概念:专门存放字符的数组,称为字符数组
  • 初始化与元素引用:
char s1[5] = {'a', 'b', 'c', 'd', 'e'};       // s1存放的是【字符数组】,非字符串
char s2[6] = {'a', 'b', 'c', 'd', 'e', '\0'}; // s2存放了一个 【字符串数组】char s[6] = {"abcde"}; // 使用字符串直接初始化字符数组
char s[6] =  "abcde" ; // 大括号可以省略s[0] = 'A'; // 索引第一个元素,赋值为 'A'
// strlen 用于计算一个字符串的长度(该长度不包括结束符)
printf("strlen(msg):%ld\n" , strlen(msg));// sizeof  他的对象是一个数组的是时候得到的结果是数组的大小
printf("sizeof(msg):%ld\n" , sizeof(msg));
//数组元素类型大小和数组元素个数的乘积

5.多维数组

  • 概念:若数组元素类型也是数组,则该数组称为多维数组
  • 语法:
数组的类型     数组名  [ 元素的数量 ] [ 类型的大小 ] ;
  • 示例:
int a[2][3];// 代码释义:
// 1, a[2]   是数组的定义,表示该数组拥有两个元素
// 2, int [3]是元素的类型,表示该数组元素是一个具有三个元素的整型数组

  • 多维数组的语法跟普通的一维数组语法完全一致

6.结语.

        通过本篇博客,我们初步认识了数组这一重要的数据结构。我希望你已经对数组的定义、特点以及基本操作有了清晰的理解。数组在编程中广泛应用,能够帮助我们有效地存储和管理数据。无论是在处理一组相似的数据时,还是在实现复杂的算法时,数组都扮演着不可或缺的角色。

        掌握数组的使用是编程学习的基础之一,在后续的学习中,我们将进一步探索如何利用数组进行更复杂的数据处理和算法设计。希望你能通过不断的实践和探索,将对数组的理解提升到一个新的层次。感谢你的阅读,期待在未来的博客中与你分享更多编程知识!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文入门:使用 Python的requests 库

简介 requests 是 Python 中一个简单易用的 HTTP 库,用于发送各种 HTTP 请求。它建立在 Python 标准库 urllib 之上,提供了更人性化的接口。 安装 requests 库 在开始之前,确保你已经安装了 requests 库。如果还没有安装,可以通…

基于WEB的旅游推荐系统设计与实现

TOC springboot280基于WEB的旅游推荐系统设计与实现 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔…

(七)Flink Watermark

Flink 的 Watermark 是用来标识数据流中的一个时间点。Watermark 的设计是为了解决乱序数据处理的问题,尤其是涉及到多个分区的 Kafka 消费者时。在 Watermark 的作用下,即使某些数据出现了延迟到达的情况,也不会导致整个处理流程的中断。此外,Watermark 还能防止过期的数据…

五、2 移位操作符赋值操作符

1、移位操作符 2、赋值操作符 “ ”赋值,“ ”判断是否相等 1)连续赋值 2)复合赋值符

驾驭时间之舟:SQL中时序数据处理的深度探索

标题:驾驭时间之舟:SQL中时序数据处理的深度探索 在数据的长河中,时间序列数据以其独特的流动性和连续性,记录着世界的每一次脉动。SQL作为数据查询的通用语言,在处理时序数据时,也展现出了其独特的魅力和…

VS Code开发C#(.NET)之快速入门

本篇快速介绍在VS Code中开发C#的完整说明和示例: 环境准备 安装VS Code: 前往Visual Studio Code官网 下载并安装VS Code。 安装.NET SDK: C#是基于.NET框架的,因此需要安装 .NET SDK。 前往 .NET官网 下载并安装适用于操…

每天一个数据分析题(四百九十一)- 主成分分析与因子分析

因子载荷矩阵是主成分载荷矩阵()的结果 A. 最小方差斜交旋转 B. 最大方差斜交旋转 C. 最小方差正交旋转 D. 最大方差正交旋转 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖…

成为Python砖家(4): 装饰器的简单理解

第一次理解 Python 中的装饰器(decorator),是Python中一个非常强大的工具,它是一个返回函数的函数。 上面这个定义很简洁,但是没说清楚。 第二次理解 装饰器,是一个接收函数 func、返回封装后的函数 wr…

编译器揭秘

从上世纪50年代开始,编程语言五花八门,编译器和解释器层出不穷。此处只列出常见编程语言的编译器和解释器信息,不常见的编程语言有单独文章介绍。 C/C cc 此处代表Unix C编译器,其他平台可能借用cc软链接到真正的C编译器。MSVC 微…

【生日视频制作】路虎劳斯莱斯中控改名字AE模板修改文字软件生成器教程特效素材【AE模板】

路虎劳斯莱斯中控改名字生日视频制作教程AE模板改文字软件特效 怎么如何做的【生日视频制作】路虎劳斯莱斯中控改名字AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件下载AE模板把AE模板导入AE软件修改图片或文字渲染出视频

Element-UI Table实现列表筛选数据及列表嵌套选择框

VUE 框架在 Element UI 的基础上,Table 组件中实现了列表数据的修改功能,支持单选和多选功能,并且列表具备筛选功能。样式如图所示。 功能介绍 点击table列名实现筛选查询功能相关性判断点击列表中的正方形实现选择框功能,同时修…

Qt5 编译 Qt creator 源码中的 designer 模块

文章目录 下载 Qt Creator 源码 下载 Qt Creator 源码 Github: https://github.com/qt/qttools 笔记打算用 Qt 5.12.12 来编译 qt creator-designer 所以笔者下载的是 tag - 5.12.12 ,解压后如下,先删除多余的文件,后续还要删除更多文件方便…

Rivian暂停亚马逊送货车生产,特斯拉Roadster再引关注

Rivian遭遇供应链挑战,暂停亚马逊送货车生产 电动汽车制造商Rivian近期宣布,由于零部件短缺,已暂停为零售巨头亚马逊生产商业送货车。这一决定标志着Rivian在应对供应链挑战方面遭遇了最新挫折。作为Rivian的最大投资者,亚马逊持有…

anaconda学习笔记:复制anaconda的base环境

在anaconda的图形界面中,新建环境,可以看到,默认的包只有几个(这里是10个),像常用的numpy、pandas等等都没有,在使用过程中还需要再次安装。 而base环境有几百个(325个)这…

【Java 数据结构】PriorityQueue介绍

优先级队列 回顾二叉树堆堆是什么堆的实现初始化堆的创建向下调整建堆复杂度插入向上调整建堆复杂度删除 PriorityQueue类介绍PriorityQueue是什么PriorityQueue使用构造方法常用方法 PriorityQueue源码介绍Top-K问题 回顾二叉树 上一次我们简单的了解了二叉树这个数据结构, 但…

【Linux】软硬链接

1 .硬链接 我们知道,真正找到磁盘上文件的并不是文件名,而是inode。 其实在linux中可以让多个文件名对应于同一个inode。 我们可以通过以下命令创建一个文件的硬连接。 ln path(文件的相对/绝对路径) newname(新文件名字) 通过…

三个AI智能体开源项目:MetaGPT/AutoGPT/DB-GPT

三个AI智能体开源项目:MetaGPT/AutoGPT/DB-GPT (qq.com) MetaGPT以其元学习的能力,展现出自我优化的独特魅力;AutoGPT则以其自动化的特性,为编程领域带来了革命性的变革;而DB-GPT则在数据库管理领域,以其深…

requests快速入门

1 安装requests库 如果你还没有安装requests库,可以通过pip安装: pip install requests 2 GET请求 GET请求通常用于从服务器请求数据。使用requests.get()函数可以发送GET请求。 2.1 基本使用 import requests url https://api.example.com/da…

如何在Java中将数据库查询结果转换为枚举类型

前言 在开发过程中,我们经常需要将从数据库获取的字符串或数字转换为更具语义的枚举类型。这不仅可以提高代码的可读性,还可以确保类型安全。这时候我们从数据库查出来的值如何通过枚举转换返回? 1. 构建枚举类型 首先,我们需要…

leetcode 括号类型题解

参考宫水三叶题解,非常有启发意义https://leetcode.cn/problems/valid-parenthesis-string/solutions/992601/gong-shui-san-xie-yi-ti-shuang-jie-dong-801rq/ 32. 最长有效括号 使用栈一次遍历,巧妙得出最长有效括号长度 func longestValidParenthes…