这两天对指针的概念及使用有了一点点模糊及混淆,指针是数据的进行间接访问方式的工具。首先有一个整型等具体的数据,然后有一个指向该数据的指针变量,这个变量里面存储的便是这个整型数据的地址。通过一个指针,可以对同一类型数据进行遍历,只进行变化的是指针的值,而且也可以通过指针对原数据进行操作修改。
将指针和普通变量当成形参的区别,指针存储的是原数据的地址,通过对指针进行解引用来访问原数据,如果直接对指针变量里的值进行修改,则其所指向的就不是原来的存储单元,但要注意该指针的类型。形参是普通变量,则是对原来数据的一份拷贝,通过计算返回结果或者是一个运行的过程。
二级指针,里面存储的是一级指针,一级指针里面存储的也是地址,二级指针里面存储的是一级指针的地址,通过对二级指针一次解引用可以操作一级指针变量里面存在的值,通过对二级指针的二次解引用,可以操作的不再是地址,而是一个具体的整型或者其它可以直接使用的数值。多级指针同理。
指针也眼花出很多的类型,有函数指针,数组指针,指针数组。函数指针所指向的是一个函数的入口地址。数组指针所指向的是一个数组,通常用于多维数组,指针数组是指针类型的数组,里面只能存储某种类型的指针。
指针可以做一些算术计算,比如自增自减,所自增的单位是以基类型的大小为单位进行自增自减。在同一类型的数组中。两个指针可以做减法,差值是中间元素值的数量。
与指针相关的操作符和优先级。指针可以通过解引用来操作操作原数据,在结构体的指针中可以用“指向”:指针->元素 来直接访问原数据。指针的解引用和自增自减的优先级:自增自减的优先级高。
指针与修饰符const,观察const修饰的是指针还是值,如果修饰的是指针则是只能进行解引用,如果修饰的是后面的值,则表示该指针中存贮的值不能变,级该指针只能指向某个存储单元,其他存储单元不能指向。
指针在传参过程中要注意传递过去的值到底有什么样的权限,到底是对数据进行修改还是对指针进行修改,一维指针和二维指针的区别。