1.定义指针 int * p; 与访问指针指向的变量 * p;这里面的 * ,是两个不同的符号,要区别对待,不要把他看成一样的东西。第一个*表示,要定义变量p是个存放地址的变量。第二个*表示,要寻址了,要找p里存放的地址指向的变量了。
2.定义int *p;有三个概念:
1. p是一个地址变量,用来存放地址。
2. 需要几次寻址才能找到最终的那个变量。
3. 最终的那个变量是什么类型的。
这里第一个概念最重要,看到一个定义要首先想到这一点。其他两个基本上是编译器检查时需要的信息,在类型转换,赋值时稍微注意下就ok了。
3.见过*连用,如 int ***p;或 **p; 但从没见过 & 连用的,如 &&x 这是错的,&只能一个变量一个变量的取地址,如:
int x=0;
int *p=&x;
int **p2=&p;
4. char ***cc;
int *******ii;
他们的共同点: cc 与 ii 都是一个地址变量,用来存放地址,对32位机器来说,他们都占4个字节。