此文带你入门C数组,认真看,必有收获

c语言数组设计从零开始(C语言程序设计)(1)

三步走战略的打法,五大能力培养体系的构建

数组、指针、函数,并列 C 语言三大重点,尤其 C 指针,堪称 C 之灵魂,从 C 数组开始,勤思苦练,必须多敲、搞清楚底层原理,系统设计,从宏观、哲学上理解 C 之精髓

强烈建议:b 站郝斌 C 视频结合着看

简单理解数组

c语言数组设计从零开始(C语言程序设计)(2)

2、

理解数组定义

int ar[10]; 这只能表示存在一个拥有 10 个 int 类型的元素的数组 ar,在这条定义语句之外的其他地方,ar 不表示数组的任何一个元素,也不表示数组的所有元素,它仅仅是数组名称而已

3、

数组元素的使用

数组元素的定义、与使用,是完全不一样的

设有如下数组:int a[10];

a 数组的 10 个元素分别是:a[0],a[1], a[2]......a[9]

数组元素下标范围取值范围在[0, n)之间,其中 n 为数组元素个数,这个数组将在内存中占用 40B 的连续存储空间

数组内存分布

数组在内存中的存储

c语言数组设计从零开始(C语言程序设计)(3)

int array[5];

array 数组应该有 5 个元素:array[0]、array[1]、array[2]、array[3]、array[4]

此时,我们的考虑,array[0]、array[4] 的前面 array[-1]、后面 array[5] 是否还有内存空间,还能访问到吗?

逻辑上不存在,物理上存在!!!

数组的定义仅仅约束的是人的思想,根本无法约束计算机的行为,关于数组下标越界,只是一个传说!

C 语言编译软件是不能发现“下标越界”的错误的!这意味着:“下标越界”这种错误完全需要靠程序员非常高的编程素养来避免!

数组常见操作

1、

数组元素的遍历

对于数组中的元素,进行不重复、无遗漏的一次性访问

c语言数组设计从零开始(C语言程序设计)(4)

A、总是从下标为 0 的元素开始遍历

B、下标总是连续变化,这意味着,对数据的遍历是连续的,不跳跃,不重复

数据存储在数组中需要满足的 3 个条件:

A、从下标为 0 的第一个元素(首元素)开始存放

B、连续存放

C、上述两个特点必须保持动态满足(意思是:无论删除还是插入数据,在删除或插入数据后,依然要满足上述两个基本条件)

对于数组的编程,主要考虑的是下标,或者可以说:玩数组就是玩下标

c语言数组设计从零开始(C语言程序设计)(5)

二维数组

c语言数组设计从零开始(C语言程序设计)(6)

2、

内存映像图

c语言数组设计从零开始(C语言程序设计)(7)

3、

二维数组赋初值

c语言数组设计从零开始(C语言程序设计)(8)

c语言数组设计从零开始(C语言程序设计)(9)

字符数组与字符串

c语言数组设计从零开始(C语言程序设计)(10)

char s[6] = "abcdef"; //语法错误,最后有一个 0 结束标志

2、

运算符:sizeof()

它是一个运算符,而非函数!!!,是一个单目运算符,其运算优先级在单目运算符中最低

c语言数组设计从零开始(C语言程序设计)(11)

C、sizeof(字符串常量)

sizeof("abcde") ==> 6B

其运算结果:该字符串常量在内存中所占用的字节数(该数值是字符串长度 1,这个 1B 就是 0 结束标志!)

c语言数组设计从零开始(C语言程序设计)(12)

总结:

sizeof() 是计算所占用的空间字节大小

strlen() 是计算字符串数组的长度,遇 0 则止

本篇文章仅仅是数组入门,对于数组的本质掌握是非常的关键,尤其在跟指针的结合,理解,打好基础,进阶提升

,