C语言:随笔3

数组:是具有相同类型的数据组成的序列,是有序集合。(他在内存中的分布是从低地址到高地址的,是一个个挨着来存储的,所以说是有序的集合而不是里边的内容是有序的)

1、一维数组定义:

类型说明符 数组名[常量表达式]

PS:一维数组在内存中的存放。(任何程序包括操作系统在运行的时候,都要加载进内存而不是在硬盘上运行的,在硬盘上是不可能运行的,CPU是从内存上调数据,内存再从硬盘上取数据,这样一个动态的过程,所以你一个东西要运行,要在CPU里运行是在内存中的,任何程序一运行他就加载到内存中了,所以呢,例如说你要想盗什么密码之类的,你应该从内存去入手,因为他的编译整个过程都是在内存中运行的)

低地址 86 mark[0]
  92 mark[1]
  77 mark[2]
  52 mark[3]
  ... ...
高地址 94 mark[99]

数组名其实就是这个数组第一个元素的首地址。

2、二维数组定义的一般形式为:

类型说明符 数组名 [常量表达式] [常量表达式]

二维数组在概念是二维的,但是实际的硬件存储器却是连续编址,也就是说存储器单元是按一维线性单元排列的。如何在一维存储器中存放二维数组,可有两种方式:一种是按行排列,即放完一行之后顺次放入第二行。另一种是按列排列,即放完一列之后再顺次放入第二列,在C语言中,二维数组是按行排列的。

数组在编译时就要说明所占的空间有多少(就是那个常量表达式)。赋值是在运行的时候赋值的。

用宏定义注释掉一段语句,让他不执行:

#if(0)
    语句1;//语句1永远不会被编译,因为if后边是0,为假跳过。
#endif

3、程序在编译运行时普通的变量是存放在堆栈区的,栈区的;而static会使得普通的变量存放在数据区也就是data区,data区一般是不能改变的,像常量,字符串一般都是在data区。

PS:无论你是什么语言,在内存中他一般都是这样的,我们整个内存主要分为四大区:

1):CODE(代码区)

扫描二维码关注公众号,回复: 11962849 查看本文章

2):DATA(数据区)(存放常量,字符串以及用static定义的变量)(数据区的特点不会因为这个函数的退出,而使定义的变量消失)(DATA区是在整个程序退出他才会释放)

3):STACK(栈区)(我们任何一个程序要运行的化,他都会把一些数据或者这个函数要调用的一些变量推进这个栈里面,再后在进行运行,之后等这个函数调用完之后就会把这个栈给释放,要不然你的内存是远远不够用的)

4):HEAP区(像STACK区是由程序自己释放和生成的,而HEAP区不同,HEAP区的分配大小是由程序员自己规定的,你规定他多大就是多大,当然你不能超出它的范围,)

要了解一下这四个分区。。。。。

猜你喜欢

转载自blog.csdn.net/m0_37957160/article/details/108141325