这周的一点总结

这周我们上课的内容感觉到有些吃力,数组与指针结合起来有千万种变换,各种地址的运用要非常的熟练,才能不再指针那感到迷惑。

  数组 

基本概念 :由相同类型的多个元素所组成的一种符合数据类型,在工程中同时定义多个相同类型的变量时,重复定义,可以使用数组。

逻辑 :一次性定义多个相同的变量,并存储到一片连续的内存中。

格式 :类型说明符  数组名[整型常量表达式]。

类型说明符:指定数组元素的数据类型,任意c语言合法类型都可以。

数组名 : c语言标识符,其值为该数组的首地址(常量)。

整型常量表达式 :指定数组元素个数。

初始化 :在定义的时候赋值,称为初始化,如果是定义的时候初始化,但是初始化列表个数小于数组的大小,那么无论这个数组是全局变量还是局部变量,没有赋值的成员都是0。

 

数组元素的引用

存储模式 :一片连续的内存,按数据类型分割成若干相同大小的格子。

元素下标 :数组开头位置的偏移量。

格式 :数组名【下标】,C语言是从0开始,下标必须是>=0的整数。

引用数组元素a[i]和普通变量一样,既可以作为左值,也可以作为右值。

下标最小值为0,最大值为 元素个数 -1。

 

字符数组

概念 :专门存放字符的数组。

初始化与普通数组类似。

 

数组元素地址解引用(*)

通过对数组元素地址解引用,可以获取地址空间里面的数据。

字符串常量

字符串常量在内存中的存储,实质是一个匿名数组。

匿名数组,同样满足数组两种涵义的规定。

 

多维数组
概念 :若数组元素类型也是数组,则该数组称为多维数组,就是一维数组的集合。

理解:

定义一个二维数组。该数组是由2个一维数组组成,分别是a[0] a[1]

每个一维数组由3个元素组成,所以二维数组有6个元素

数据类型 二维数组的名字[有多少个一维数组][每个一维数组有多少个元素]

在内存里的存放:

按行存放,先放第一行,再放第二行...

多维数组的语法跟普通的一维数组语法完全一致

二维数组的名字其实也是地址。

 

指针

基地址:

单字节数据:对于单字节数据而言,其地址就是其字节编号。

多字节数据:对于多字节数据而言,基地址是其所有字节中编号最小的那个,称为基地址。

取址符:&;每个变量都是一块内存,都可以通过取址符获取其地址。

虽然不同的变量的尺寸是不同的,但是他们的地址的尺寸确实一样的,在32为系统为4字节,64位系统为8字节。

不同的地址虽然形式上看起来是一样的,但由于他们代表的内存尺寸和类型都不同,因此它们在逻辑上是严格区分的。

 

概念:一个专门用来存放内存地址的变量,指针也就是指针变量。

指针变量:专门用来存储地址的变量。

格式 :类型*指针变量名。

“类型” : 指针变量指向的内存空间存放的数据类型。

“指向” : 如果我保存了你的地址,那么就说我指向你。

“*” :定义指针变量的固定格式。

赋值 :赋给指针的地址,类型需跟指针的类型相匹配。

索引 :通过指针,取得其指向的目标。

尺寸 :

指针尺寸指的是指针所占内存的字节数。

指针所占内存,取决于地址的长度,而地址的长度则取决于系统寻址范围,即字长。

结论:指针尺寸只跟系统的字长有关,跟具体的指针的类型无关。

32位系统,指针的大小占用4字节。

64位系统,指针的大小占用8字节。

 

野指针

指向一块未知的区域的指针,被称为野指针。

危害:

1.引用野指针,相当于访问了非法的内存,常常会导致段错误。

2.引用野指针,可能会破坏系统的关键数据,导致系统崩溃等严重后果。

产生原因:

指针定义之后,未初始化。

指针所指向的内存,被系统回收。

指针越界。

空指针

保存了零地址的指针

 

指针偏移

指针的加减称为指针的偏移,偏移的单位由指针的类型大小所决定所谓指针的类型大小指的是指针变量所指向的内存空间的数据类型。

 

这些内容让我困惑了好几天,然后那几天,每天晚上看老师的录屏和笔记,写老师布置的题目,可算是把这些东西搞明白了一些,不再是那么的迷茫,我相信我在告一段时间就可以临高会这些了。

posted @ 2023-07-18 12:25  Williekai  阅读(23)  评论(0)    收藏  举报