数组和字符串

为了处理更复杂的数据,C语言还定义了一些功能更强大的复合数据类型,如数组类型、结构体类型、共用体类型和枚举类型。

数组是同一数据类型的许多数据元素按某种顺序排列在一起的集合,通过访问数组名和索引就可以访问数组中的任意元素。

本节将重点学习一下内容:

  • 一维数组的使用;
  • 具名变量的使用;
  • 数组越界的风险;
  • 二维数组的使用;
  • 多维数组的使用。

8.1 一维数组

一维数组是C语言中用来存储和处理一维序列数据的数据类型。本节将讨论一维数组的定义、数组元素的访问和初始化、数组中各元素地址的表示、数组越界的问题。

8.1.1 定义一维数组

一维数组是用以存储一维数列中数据的集合。数组型变量的定义由4部分组成:数组名、数据类型名、数组操作符和数组容量。

标准定义方式为: 数据类型名 数组名 [数组容量]

举例说明:int array[4]; 上述定义是将变量array定义为存储 4 个 int 型数据的数组。

注意:数组容量必须是常量表达式。

C语言中还允许以下方式在一条语句内定义多个数组变量:int clour[10] , size[5] , shape[9] ; 其中,clour 的数据类型为 int [10]、size 的数据类型为 int [5]、shape 的数据类型为 int [9]。

8.1.2 访问一维数组

通过使用数组名、数组操作符和索引的组合可以访问数组中的任一元素,标准形式 : 数组变量名 [索引]

注意:索引必须为一个整数的表达式;索引的值应大于或等于0,且小于数组容量;数组内元素编号从0开始,直到数组容量的值减1。

8.1.3 初始化一维数组

数组未经初始化会出现不可预期的问题。数组的初始化就是在定义变量的同时给其中的数组元素赋值,有三种形式:
形式一:数据类型 数组名[N] = {值0,值1,值2,…,值(N-1)};
形式二:给部分元素赋值,编译器会自动把剩余元素的内存空间初始化为0
形式三:定义中不给出容量大小,不推荐

8.1.4 数组的存储形式

数组在内存中是作为一个整体分配内存的,数组元素的内存地址都是连续的 ,其差值为数组存储的数据类型的字节长度值。数组变量的值为数组的首地址。

注意事项:使用数组元素时,数组索引超出了正常的范围。 C语言并不检查数组索引是否越界,从而导致数组使用范围外的索引时,能够访问到数组之外的空间,而这些空间有可能是分配给其余变量的。因此,我们要避免数组越界。即使是越界的数组元素,其地址也是按一定规律递增或递减的。

9.1 字符串

字符数组:char 数组名 [数组容量]

字符串常量:包含在一对引号中的字符的集合,可以是句子,也可以是关系表达式。对于任何一个字符串常量,C语言存储其有效的内容的同时,还会在它后面加上一个‘\0’,内存中的空间就会多一个字符。

字符串变量:一维字符数组,使用字符串常量初始化一维数组,便可以得到一个字符串变量。

21天学通C语言-学习笔记(7)相关推荐

  1. 21天学通C语言-学习笔记(3)

    第三章 变量与常量 在C程序中,使用常量和变量两种形式来存储和表示数值.为了保存各种不同的数据,C语言定义了一系列的数据类型.本章将重点讨论常量和变量的使用方法.通过本章的学习,要重点掌握以下内容: ...

  2. 《21天学通C语言(第6版•修订版)》一导读

    前 言 21天学通C语言(第6版•修订版) 本书旨在引导读者在21天内学通C语言编程.虽然有来自诸如C++.Java和C#的激烈竞争,但很多初学编程者还是会选择C语言.正如第1天课程介绍的原因,选择C ...

  3. 《21天学通C语言(第7版)》一2.2 程序的组成部分

    本节书摘来自异步社区<21天学通C语言(第7版)>一书中的第2章,第2.2节,作者 [美]Bradley Jones , Peter Aitken , Dean Miller,更多章节内容 ...

  4. 21天学通c语言第四版pdf,21天学通Visual C++ PDF扫描版[116MB]

    21天学通Visual C++ 内容简介: 本书是Visual C++语言的入门教程,较全面地介绍了Visual C++编程的相关知识,然而,本书并没有泛讲Visual C++语言的所有知识,而是突出 ...

  5. 21天学通c语言思维导图,21天思维导图学习 ----开发脑洞、助力成长

    kk      第一次知道"思维导图"这个词,是在参加Grace创办的第一期"成长集训营".她建议我们用思维导图的方式去完成每天的思考作业,了解和认知也仅在于它 ...

  6. 21天学通Java学习笔记-Day01

    21天学通java 中文第6版 下载地址:点击打开链接 Day01: 命令行查看和设置classpath: 查看:echo %classpath% 设置:set classpath = %classp ...

  7. 21day学通python epub_21天就让你掌握Python语言,《21天学通Python》PDF版送给你去学...

    Python的学习书籍小编看过很多,但是这本<21天学通Python>真的是堪称极品! 本书的作者团队成员为一线开发工程师.资深编程专家或专业培训师,在编程开发方面有着丰富的经验,并已出版 ...

  8. ole2高级编程技术 pdf_21天快速掌握Python语言,《21天学通Python》PDF版送给你去学...

    Python的学习书籍小编看过很多,但是这本<21天学通Python>真的是堪称极品! 本书的作者团队成员为一线开发工程师.资深编程专家或专业培训师,在编程开发方面有着丰富的经验,并已出版 ...

  9. C语言学习书籍推荐《学通C语言的24堂课》下载

    下载地址:点我 编辑推荐 <学通C语言的24堂课>: 用持续激励培养良好习惯以良好习惯铸就伟大梦想 --致亲爱的读者朋友 在开始学习<学通C语言的24堂课>的同时,强烈建议读者 ...

  10. 21天学通Python,从入门到上手,学习方式+学习资料+学习视频汇总,零基础转行自学必备

    前言 python的学习资料小编看过很多,但是这个21天学通python真的是堪称极品!作者团队成员为一线开发工程师.资深编程专家或专业培训师,在编程开发方面有着丰富的经验,颇受广大读者认可.长期积累 ...

最新文章

  1. 使用admin lte 碰到访问Google字体的问题
  2. 动态表单构建器——建造者模式
  3. 《Mysql数据库及应用》_MySQL数据库及应用
  4. 【题解】 [HNOI2015]落忆枫音 (拓扑排序+dp+容斥原理)
  5. JetBrains WebStorm 快捷键失效
  6. 小米oj 反向位整数(简单位运算)
  7. 数据结构-王道-排序
  8. 这十大挑战,摆在DL面前:马库斯长文质疑深度学习
  9. Android图片爬虫,看妹纸神器项目源码,ListView单张图片查看
  10. java调用nlpir_ZH奶酪:Java调用NLPIR汉语分词系统
  11. 拿R来画画(八):面积图与堆积图
  12. docker学习之docker hub寻宝游戏
  13. 最新微信公众号文章数据导出软件工具
  14. 这老铁教你如何制作亮眼简厉!!
  15. 邮箱注册,登录及激活
  16. 任务的创建与执行-4
  17. Couple可爱情书字体
  18. Unity动画 Legacy、Generic和Humanoid
  19. Effective STL 读书笔记
  20. 软件测试高级技术-性能测试

热门文章

  1. Word2Vec简明教程:入门、原理及代码实现
  2. 再别极域(亲测有效)
  3. 【windows10】对系统盘瘦身
  4. 【UAC】Windows UAC 原理浅析
  5. Jupyter Notebook代码字体更改
  6. html5 如何打包成apk,将H5封装成android应用APK文件的几种方法
  7. STM32在线仿真出现是循环,使用mcuisp下载程序却可以运行,JTAG下载程序可以下载成功,却没有任何动作!
  8. er图-为什么画er图?有哪些规范?
  9. 京东/淘宝/苏宁试用助手Ver20210203
  10. awg线径与电流_AWG线规—导线外径(MM)与电流(A)对照