声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。
作者:sumjess
适用:这本书我已经看过4遍了,但是该书的知识点我并不是都常用,所以总会有忘记的,所以来写这本书的随手笔记,记录重点、易忘点。该博客可以当做字典,也可以当做你的笔记。
目前内容:第十章总结
第十章:数组和指针
1、数组:
(1)数组由数据类型相同的一系列元素组成。
(2)初始化数组:
① 数组通常被用来储存程序需要的数据。
② 只储存单个值的变量有时也称为标量变量。
③ int text[4]={1,2,3,4};用以逗号分隔的值得列表(用花括号括起来)来初始化数组,各值之间用逗号分隔。在逗号和值之间可以使用空格。
④ 使用const声明数组:有时需要把数组设置为只读。这样修改后,程序在运行中就不能修改该数组中的内容。
⑤ 如果部分初始化数组,剩余的元素就会被初始化为0,如果初始化列表的项数多于数组元素个数,编译器会视为错误。
⑥ 可省略方括号中的数字,让编译器自动匹配数组大小和初始化列表中的项数。
⑦ sizeof text[0]是数组中一个元素大小(以字节为单位),sizeof text是整个数组大小(以字节为单位)。
(3)指定初始化器(C99):
① 可以在初始化列表中使用带方括号的下标指明待初始化的元素。例如:int text[6]={[4]=3};
② 两个重要特性:
第一:如果指定初始化器后面有更多的值,[4]=1,2,3,在text[4]被初始化1后,text[5]和text[6]将分别被初始化了2,3。
第二:如果再次初始化指定的元素,那么最后的初始化将会取代之前的初始化。
③ 编译器会把数组的大小设置为足够装的下初始化的值。
(4)给数组元素赋值:
声明数组后,可以借助数组下标(或索引)给数组元素赋值;
2、多维数组:
初始化二维数组:初始化二维数组是建立在初始化一维数组的基础上的。
3、指针和数组:
指针提供一种以符号形式使用地址的方法;
■指针的值是它所指向对象的地址;
■在指针前面使用运算符可以得到该指针所指向对象的值;
■指针加1,指针的值递增它所指向类型的大小(以字节为单位)。
dates + 2==&date[2] //相同的地址
*(dates + 2)==dates[2] //相同的值
可以使用指针标识数组的元素和获得元素的值。从本质上看,同一个对象有两种表示方法。实际上,C语言标准在描述数组表示法时确实借助了指针。也就是说,定义ar[n]的意思是*(ar + n)的意思是“到内存的ar位置,然后移动n个单元,定义ar[n]的意思是*(ar+n).可以认为*(ar+n)的意思是“到内存的ar位置,然后移动n个单元,检索储存在那里的值”。
4、函数、指针和数组:
解释:
注意:
① 只有在函数原型或函数定义头中,才可以用int ar[]代替int *ar;
② int ar[]指针ar指向的不仅仅是一个int类型值,还是一个int类型数组的元素;