1、指针是变量,可以当成一般的变量来操作
2、指针可以做减法,不可以做加乘除,减法的意思是求两个内存空间之间隔着几个字节。加乘除没有意义
3、内存空间中的每个字节都有一个地址,相当于一个小区中的那个楼那个单元,每个单元都有一个地址(如1号楼2单元三楼西户,呵呵)。指针就是记录这个地址的。如果想知道这个地址住的是谁,那么这个户主就是这个指针所指向的地址的内容
4、语法上的写法,定义时用*来表示是定义指针
如int *p;那么定义一个int型的指针p。
int a;int *p=&a;定义p指针指向变量a的地址,因为a不是指针,所以用取地址符&让p指向a变量的地址
int a;
int *p;
p=&a;
int a;
int *p=&a;
上面两个完全是一个意思
5、和数组的组合,一维数组和指针,数组名相当于指针,因为数组名是表示数组开始的首地址
二维数组,理解起来麻烦一些,数组名相当于二层指针
行列表示二维数组,那么加一个*表示一行的首地址,两个**才是元素
多维数组理解也二维数组相似
6、和函数结合,因为函数只能返回一个数据(这个是定下的),在返回多个数据的时候,一般是用数组,返回数组的首地址就可以
那么在子函数中改变了数组的内容,那么主函数中,数组的内存也相应的改变了
因为传递过去的知识数组的首地址,而不是另外开辟内存保护主函数中数组的内容
7、和结构体,共用体的组合,链表是经典,还有文件,这些都有固定的格式代码,一般来说操作就是繁琐,理解不难,实在不行,套用格式就可以。
|
|