面我们从指针是变量这个原则出发,来分析什么是指针:
- 作为一个变量,肯定有自己的地址
- 作为一个变量,肯定有自己的值,和普通变量的区别就是指针变量的值是地址。
- 从第二点延伸过来,既然指针变量的值是地址,那么那个地址上的内容就是指针变量指向的数据,指针的类型就是指针变量指向数据的类型。
- 指针有本身的类型,这个本身的类型区别于指向对象的类型。
指针本身的类型是int型:
一般情况下同一平台上所有类型指针都是一样的,长度则是平台相关,一般情况下32位机中为4字节,64位机中为8字节,事实上,指针的大小由处理器中所使用的地址总线宽度决定。
而指针指向数据的类型则是在定义时指定的,比如int ptr,char str,在这里,ptr指针的数据类型就是int型,而str指针指向的类型是char型,
区分指针指向数据的类型主要是用在对指针解引用时的不同,指针的值是具体的某一个位置,指向数据的不同则代表解引用的时候所取数据的不同,
当ptr为int*类型时,表示在ptr表示的地址处取sizeof(int)个数据,依此类推。
指针的加减