【C语言】关于指针的那些事

//1、指针==地址
//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;//不同的系统显示的字节数不一样,如上所示
}

猜你喜欢

转载自blog.csdn.net/weixin_41576955/article/details/79750233