在16位windows的时候,由于采用分段内存管理模式,指针分长指针和短指针,长指针包括一个段地址和位移地址,而短指针仅是在约定的段地址下的一个位移地址。
现在从32位windows起,采用平面内存管理模式,可直接用32位的指针访问平面线性内部。
在c语言中,指针类型的灵活性很强,不仅可以指向各种原子类型,还可以指向复合类型,甚至还能指向函数,文件等等。指针,说白了,就是一个指向内存块的地址。
指针经常用于指向动态分配的内存,内存分配后得强制转为和指针相同的类型,一般用作链表,广义表,二叉树等,当然,内存就放在那,随你怎么用,只要小心上溢和下溢就行,在程序运行时根据用户的需求分配内存空间也行。但用完最好立即释放掉,如果你觉得内存充足,也可在程序结束后由os回收。
指针支持算术,取值,取址,还有关系运算。
指针也具有传递性,而传递可修改指针,被调函数可用二级指针(即多级指针);指向字符串的指针,被调函数则可用字符数组;当然还有其他的奇淫技巧。
指针有两种不能访问,一是空指针,二是野指针。
此外,指针还有常量指针和指针常量之分,也别把数组指针和指针数组搞混了,int *p[n],p先与[]结合,则为数组,也就是指针数组;而int (*p)[n],p先与*结合,则为指针,也就是数组指针。
以上只是基础,更多操作技巧还待大家发掘!