1.指针变量指向的类型代表取值宽度
任何指针变量都是4字节,所以指针类型和指向的类型都不代表它的空间大小,指向类型代表从首地址向后的取值宽度。
tip:系统采用小端序,即低地址存低位(即倒叙)。取时也是倒叙取。
2.指针变量指向的类型代表+1之后的跨度
int *p = #
int *p2=p+1; //p2指向&num后四个字节(int)
tip:当需要精确到字节操作内存空间,最好定义指向char类型的指针变量。
3.指针变量操作普通变量
还记得scanf中键入的内容是需要存放在一个叫&num空间中(告诉他一个地址编号),现在我们有了指针变量存放的地址编号,就可以直接用上p
int num=0;
int *p=#
scanf("%d",p);
4.万能指针(用void*定义指针变量)
万能指针可以指向任何类型的变量而不用进行强制类型转换,通常用作算法(或是函数)的形参输入,以增加算法的泛用性。
void*p没有宽度,所以不能对void*类型取指向的内容(解引用)。如果要取,需要强转类型
int num1;
void *p = &num1;
int num2;
num2 = *(int*)p; //强转为int
5.指针使用时千万注意不要访问非法内存(只能访问已开辟的空间)