这周的一点总结
这周我们上课的内容感觉到有些吃力,数组与指针结合起来有千万种变换,各种地址的运用要非常的熟练,才能不再指针那感到迷惑。
数组
基本概念 :由相同类型的多个元素所组成的一种符合数据类型,在工程中同时定义多个相同类型的变量时,重复定义,可以使用数组。
逻辑 :一次性定义多个相同的变量,并存储到一片连续的内存中。
格式 :类型说明符 数组名[整型常量表达式]。
数组名 : c语言标识符,其值为该数组的首地址(常量)。
整型常量表达式 :指定数组元素个数。
初始化 :在定义的时候赋值,称为初始化,如果是定义的时候初始化,但是初始化列表个数小于数组的大小,那么无论这个数组是全局变量还是局部变量,没有赋值的成员都是0。
数组元素的引用
存储模式 :一片连续的内存,按数据类型分割成若干相同大小的格子。
元素下标 :数组开头位置的偏移量。
格式 :数组名【下标】,C语言是从0开始,下标必须是>=0的整数。
引用数组元素a[i]和普通变量一样,既可以作为左值,也可以作为右值。
下标最小值为0,最大值为 元素个数 -1。
字符数组
概念 :专门存放字符的数组。
初始化与普通数组类似。
数组元素地址解引用(*)
通过对数组元素地址解引用,可以获取地址空间里面的数据。
字符串常量
匿名数组,同样满足数组两种涵义的规定。
多维数组
概念 :若数组元素类型也是数组,则该数组称为多维数组,就是一维数组的集合。
理解:
定义一个二维数组。该数组是由2个一维数组组成,分别是a[0] a[1]
每个一维数组由3个元素组成,所以二维数组有6个元素
数据类型 二维数组的名字[有多少个一维数组][每个一维数组有多少个元素]
在内存里的存放:
按行存放,先放第一行,再放第二行...
多维数组的语法跟普通的一维数组语法完全一致
二维数组的名字其实也是地址。
指针
基地址:
多字节数据:对于多字节数据而言,基地址是其所有字节中编号最小的那个,称为基地址。
取址符:&;每个变量都是一块内存,都可以通过取址符获取其地址。
虽然不同的变量的尺寸是不同的,但是他们的地址的尺寸确实一样的,在32为系统为4字节,64位系统为8字节。
不同的地址虽然形式上看起来是一样的,但由于他们代表的内存尺寸和类型都不同,因此它们在逻辑上是严格区分的。
概念:一个专门用来存放内存地址的变量,指针也就是指针变量。
指针变量:专门用来存储地址的变量。
格式 :类型*指针变量名。
“指向” : 如果我保存了你的地址,那么就说我指向你。
“*” :定义指针变量的固定格式。
赋值 :赋给指针的地址,类型需跟指针的类型相匹配。
索引 :通过指针,取得其指向的目标。
尺寸 :
指针所占内存,取决于地址的长度,而地址的长度则取决于系统寻址范围,即字长。
结论:指针尺寸只跟系统的字长有关,跟具体的指针的类型无关。
在32位系统,指针的大小占用4字节。
在64位系统,指针的大小占用8字节。
野指针
指向一块未知的区域的指针,被称为野指针。
危害:
2.引用野指针,可能会破坏系统的关键数据,导致系统崩溃等严重后果。
产生原因:
指针所指向的内存,被系统回收。
指针越界。
空指针
保存了零地址的指针
指针偏移

浙公网安备 33010602011771号