1、指针无论是什么类型,所占内存都是4或8个字节(存的是地址)(X86是32位环境,占四个字节;X64是64位环境,占八个字节)地址就是32或64位二进制0或1组成的序列,位数由编译环境决定。
2、指针类型决定了指针进行+1或-1操作时,一次走远的距离。而其他类型比如整型,进行+1就真的只是+1,而整型指针变量相当于+4。
3、const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。const如果放在*右边,修饰的是指针变量本身,保证了指针变量的内容不能修改,但是指针变量指向的值可以通过指针改变。
4、指针运算:
(1):指针加减整数:根据指针变量类型决定移动距离。
(2):指针减指针:整数。得到的是两个指针之间的元素个数,而不是距离。
(3):指针的关系运算:
指针和指针比较大小,地址和地址比较大小:
5、为了避免野指针:1.指针初始化 2.注意不要超过有效范围。
6、指针数组与数组指针:
指针数组是存放指针的数组(数组内的每一个元素是指针)形如int *p[10]
数组指针是指向数组的指针 形如int (*p)[10]
二维数组的数组名也是数组首元素的地址,首元素的地址就是第一行的地址,第一行的地址就是一维数组的地址,类型是数组指针类型。
7、回调函数:
形如主函数中调用了calc(add),
则被调用函数为void calc(int (*pf)(int int))
其中add函数为int add(int int)
8.关于qsort函数的使用。
需要包含#include <stdlib.h>
qsort(void*a,size_t lenth,sizeof(a),int (*compare)(const void*,const void*))