C语言:一维数组的创建、初始化

news2024/12/24 22:13:01

一、一维数组的创建

数组的定义:在C语言中有各种数据类型,而每一种数据类型都有相对应的数据元素,这些元素可以组成一个团体,一个集合,从而有了数组概念。

数组也有三要素:数组元素类型,       数组名称,         数组大小。

                                type_t                   arr_name            [const_n];

const_n 是一个常量或者常量表达式,用来指定数组的大小

//代码1
int arr1[10];

//代码2
int count = 10;
int arr2[count];
 
//代码3
char arr3[10];
float arr4[1];
double arr5[20];

以上为代码的创建形式,我们最常用的数组类型就是int,char,float型。

但对于代码2的创建来说,它涉及到一个“可变长数组”名词概念。

数组创建,在C99标准之前, [ ] 中只能给一个const类型的常量才可以使用,变量是不能用在表示数组大小的,而在C99标准中支持了变长数组的概念,一般gcc的编译器是支持这种变长数组的类型,但在VS等编译器中是不支持的,所以代码2不可用。
 

二、数组的初始化

数组的初始化和变量初始化相同,都是在创建的同时给其赋合理的初始值。注:初始化操作对任何一个数组也只能执行一次,多次对同一个数组初始化是非法的。

//1.不完全初始化
int arr1[10] = { 1,2,3 };
char arr2[5] = { 'a','b','c' };
char arr3[5] = "abc";

char arr4[] = "abcd";
char arr5[] = { 'a','b','c' };


//2.完全初始化
int a1[5] = { 1,2,3,4,5 };
char a2[7] = "abcdef";
float a3[3] = { 3.14,6.28,7.9 };

上面的代码中数组分为两种初始化方式:1.不完全初始化  ;2.完全初始化

何为不完全初始化?

  1. 创建的数组规定了大小,也就是确定了数组中只能放的元素个数,但只给几个元素赋了值,没有管剩下的元素。
  2. 创建的数组没有规定大小,但系统会根据你输入的元素去开辟相应的空间大小。

比如:

        (1)arr1中就是情况a,虽然规定了大小为10,可以存放10个整形元素,但只分配了前三个元素的值,后面的元素都只能为0 (系统默认将未赋值的元素赋值为0)。

         (2) 在char字符型数组中也是一样,后面未赋值的元素归为'\0'字符('\0'等价于0)。

         (3) arr4与arr5未规定数组大小,所以通过字符串"abcd"给arr4开辟了5个字符的空间,原因是:"abcd"==>'a','b','c','d','\0' ,共5个字符。而arr5中的 ’a','b','c'只是单纯的三个字符,所以arr5大小就分配3个字符的空间(1个字符=1字节大小)。结果如下图

 

 求数组大小:

        sizeof:是计算变量、数组、类型和类型大小的单目操作符,单位为字节。

        strlen:只能计算字符串的长度函数。使用它需要引头文件。 

区别就在于sizeof是万能计算的,strlen是单一计算的;sizeof计算字符串函数时,会多计算一个字符'\0','\0'是字符串的结束标准,每一个字符串都会有,只是不显示出来。

而strlen只会计算'\0'之前的字符串的字符个数,strlen遇到'\0'才会停止计算,否则会一直找下去,直到遇上'\0'字符,从而产生随机值。所以sizeof的值永远要比strlen计算的值多一(只限于字符串数组!!!)   对于其他类型两者的值都一样。      

如下图试验所得。

   而完全初始化就是两者都必备。

C语言数组讲解(1)一维数组的创建和初始化。_云逸943的博客-CSDN博客

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

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

相关文章

双链笔记Logseq的安装指南

便民服务还是挺方便的,不用出小区就可以做了 本文完成于 10 月初,撰写时 Logseq 的版本为 v0.8.8,发布时的最新版本是 v0.8.11 什么是 Logseq ? Logseq 是一个本地优先的非线性大纲笔记本,用于组织和共享您的个人知识库…

Win11电脑如何设置自动开机(Windows 11 2022H2)

Win11电脑如何设置自动开机 ​ 文章目录1、最先右键选择“此电脑”,点一下“管理”。2、随后寻找系统工具里的“任务方案程序”。3、再点一下右边的“创建基本任务”。4、名字中输入“自动开机”。5、随后选择自动开机的次数。6、然后设置我们应该自动开机的实际时间…

并发编程之Executor线程池原理与源码解读

线程 线程是调度CPU资源的最小单位,线程模型分为KLT模型与ULT模型,JVM使用的KLT模 型,Java线程与OS线程保持1:1的映射关系,也就是说有一个java线程也会在操作系统里有一个对应的线程。Java线程有多种生命状态 NEW,新建 RUNNABLE,运…

分布式架构演进过程

分布式的前提,我们得有多台服务器,那么我们需要知道世界上第一台计算机的由来,而第一台计算机的参考模型就是冯诺依曼模型,为此奠定了所有的分布式都在围绕着这个模型里面的某一块或者相互之间模块进行打交道。 搞分布式又有什么意…

【计算机毕业设计】7.健身俱乐部会籍管理系统+vue

一、系统截图(需要演示视频可以私聊) 摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的…

关于clickhouse单节点部署

因为公司网络问题,下载clickhouse无法使用命令下载,所以用压缩包进行下载安装。 首先在其官网下载下载安装包 https://packages.clickhouse.com/tgz/stable/ 一共要下载四个包 clickhouse-client clickhouse-common-static clickhouse-common-static-d…

miRNA 在基因调控中的作用

MicroRNA (miRNA) 是什么?“micro”“mi”是微小的意思,顾名思义,miRNA 就是小的非编码 RNA,长度约 23 个核苷酸 (nt),它在转录后的基因调控中发挥关键作用,包括疾病的发生、细胞分化与组织发育&#xff0c…

山东大学线性代数-1-矩阵-2

目录 1.9 初等矩阵 1.9.1 初等矩阵的定义 1.9.2 初等矩阵的性质 1.9.3 初等矩阵与初等变换的关系 1.9.4 满秩矩阵的四种等价表述 1.10 逆矩阵的定义及可逆条件 1.10.1 逆矩阵的定义 1.10.2 矩阵可逆的条件 1.10.3 二阶可逆矩阵的逆矩阵求法 1.11 逆矩阵的求法&#x…

Apollo 应用与源码分析:Apollo工程概述与AUTOSAR架构

目录 Apollo 工程概述 目录结构 软件架构 硬件架构 AUTOSAR架构 Apollo 概述 目录结构 |-cyber 消息中间件,替换ros作为消息层 |-docker 容器相关 |-docs 文档相关 |-modules 自动驾驶模块,主要的定位,预测,感知&#xf…

【Java进阶篇】第四章 异常处理

文章目录1、异常2、类Throwable3、运行时异常和编译时异常4、异常的处理5、异常导致某些代码不能被执行6、try...catch总结7、异常对象的常用方法8、try...catch和finally9、final、finally和finalize的整理区分10、如何自定义异常11、异常在实际开发中的作用12、异常与方法覆盖…

带联网功能的RFID宿舍门禁(六)-两年后的再次总结

文章首发及后续更新:https://mwhls.top/4066.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 带联网功能的RFID宿舍门禁 两年后又来了次总结&#xff0c…

聚观早报|中国制造成世界杯交通主力;特斯拉拟召回32万辆车

今日要闻:中国制造成世界杯交通主力;特斯拉拟召回32万辆车;iPhone14pro发货或延期至2023年;Tik Tok逆势宣布招聘;世界杯部署2.2万电子眼中国制造成世界杯交通主力 据消息,来自中国的新能源客车成了服务本届…

美国、欧洲、中国关于工业互联网的比较分析

工业革命的发展历史 1.0•机械化•大规模 2.0•电气化•自动化 3.0•信息化•产品标准 4.0•网络化•定制 3.0相当于肯德基麦当劳门店全部机械化,全程过程控制,任何一批不合格的产品,都可以追溯到上游任何一个环节 4.0全部设备通过中央控…

【C++笔试强训】第二十九天

🎇C笔试强训 博客主页:一起去看日落吗分享博主的C刷题日常,大家一起学习博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。 💦&a…

【linux】coredump问题排查

序言 记录coredump问题的一些定位技巧 1. coredump简介 coredump称为核心转储,就是在进程异常时的一个快照,保存了异常时的内存、寄存器、堆栈等数据当进程接收到某些 信号 而导致异常退出时,就会生成 coredump 文件core文件是ELF文件格式…

docker-compose 安装 Prometheus + Grafana 配置监控页面

安装 Prometheus Grafana docker 编排 prometheus:image: prom/prometheus:v2.40.1container_name: prometheusports:- "9090:9090"volumes:- /docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.ymlnetwork_mode: "host"grafana:image: gra…

【Linux】基础:进程控制

【Linux】基础:进程控制 摘要:本文主要介绍关于Linux进程控制内容,分为创建、退出、等待与替换四个板块,希望读者可以掌握每个板块的主要概念以及使用原因和调用方法。 文章目录【Linux】基础:进程控制一、进程创建1.1…

Nginx重定向

Rewrite简介 Rewrite是Nginx服务器提供的一个重要基本功能,是Web服务器产品中几乎必备的功能。主要的作用是用来实现URL的重写。 注意:Nginx服务器的Rewrite功能的实现依赖于PCRE的支持,因此在编译安装Nginx服务器之前,需要安装PCRE库。Ngin…

(续)SSM整合之springmvc笔记(SpringMVC处理ajax请求)(P154-158)

目录 SpringMVC处理ajax请求 一 准备工作 1 新建spring_mvc_ajax com.atguigu 2 .导入依赖 3 添加web模块 4 .配置web.xml 5 . springmvc.xml 6 .创建控制层 7 . index.html 8 静态 9 部暑到tomcat上 10 启动tomcat 二 . 测试SpringMVC处理ajax 1 . ind…

TCP三次握手与四次挥手详解

TCP三次握手(建立TCP连接): 建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连…