//2、获取任何变量的地址都是:&变量名
//3、*指针变量名,则间接访问(跳到,解引用)到指针指向的变量(解引用是指针变量的特殊用法,它也是变量,也有变量本身的用法)
//4、指针类型一样才能赋值: int a =10;(整型对整型) int * p = &a; (把a的地址赋给指针p)
#include <stdio.h>
int main()
{
int a =10;
int b =20;
int *p = &a; //把a的地址赋给p
*p =100;// a=100; 间接访问符 解引用
p = &b; //把b的地址赋给p (把之前a的地址覆盖了)
*p = 200; //b=200;
int **pp = &p; //把指针p的地址(二级)赋给 pp
//int **pp = &a;//error 指针类型不一样
*pp = &a;//*pp == p 所以 p=&a
**pp = 1000;//中间通过两次解应用 把1000赋给a
*pp = &b;
**pp = 2000;//b=2000
printf("%d,%d,%d\n",a,b);
printf("\n%d,%d",p,*p);//第一个是指针p的地址,第二个是*p==b的数值
return 0;
}
//5、指针的大小
//x86或者32位平台,指针4字节
//x64或者64位平台,指针8字节
#include <stdio.h>
int main()
{
printf("%d\n",sizeof(char*));
printf("%d\n",sizeof(short*));
printf("%d\n",sizeof(int*));
printf("%d\n",sizeof(long*));
printf("%d\n",sizeof(long long*));
printf("%d\n",sizeof(float*));
printf("%d\n",sizeof(double*));
printf("%d\n",sizeof(double**));
printf("%d\n",sizeof(double**********));
return 0;//不同的系统显示的字节数不一样,如上所示
}