1、静态指针在初始化时必须使用编译时可以确定地址表达式完成赋值,如
static int a; static int* pa = &a;//初始化时必须使用可以确定地址的表达式 int b; static int *pb; pb = &b;//此处属于运行时,使用没有问题
2、指针常用的一些运算:
a 相等或不等判断是否指向同一个变量
b 指针加上整数i指向第i个元素
c 指针间相减判断相隔几个元素
3、指针常量和常量指针
; ; int * const p2= &a; //p2 = &b; //p2是一个指针常量,无法改变他的值 int const *p1 = &a; p1 = &b; //*p1=2; //p1是常量指针,可以改变指针的值,但是无法改变指向的元素的值,指向的元素可以不为常量 const int* p3; //p3同p1,个人认为这种写法更有利理解,推荐这种 p3 = &a; p3 = &b; //*p3 = ;
4、int (*p) []:数组指针,指向数组的一个指针
int * p[]:指针数组,成员是指针的一个数组
理解这个要记住[]的优先级比*高,在不加括号的前提下,(p[])优先结合,表示是一个数组