1、指针的定义
type * ptr;
ptr是指向type的指针,type除了可以为基本的数据类型外,还可以为指针、数组、结构体、类、函数等;在判断是指向什么类型时,只需要看最后一个*号,之前的就是所指向的类型;
2、指针的长度
无论指针指向什么类型,指针的长度只跟CPU的位数相关,如果系统是是32位的,那么指针的长度就是32bit,也就是4字节;sizeof(char *)、sizeof(int *)。。。。统统结果都为4,不要被type的类型所迷惑!!!
3、指针的赋值
指针指向数据的存放地址,所以指针里面存放的也就是数据的地址;,有以下两种赋值方法:
int Num = 100;
int *ptr = &Num;
和
int Num = 100;
int *ptr ;
ptr = &Num;
第一种方法容易引起误解,以为*ptr是指Num的值,怎么能赋值为地址?其实是没有划分清楚那条指令,第一条指令可以理解为:(int *) ptr = &Num; ptr是指针,*ptr是指针指向地址的值!
4、指针的运算
type *ptr;
ptr ++;
ptr变化了多少?是不是加1? 没有表面上看的那么简单,在这个地方,编译器对ptr执行的是加sizeof(type)的操作!!
指针的实际运算将会由编译器在编译的时候,根据指针指向数据类型的大小进行实际的翻译转换--这也是指针类型的作用!!指针只能进行加减,不能进行乘除操作!