1:指针:就是地址
2.&变量名:获得该变量的地址,&称为取地址符
3.指针变量:访问指针变量指向的内容,间接访问符或者解引用
解引用实例(主函数如下)
int main()
{
int a = 10;
int b = 20;
int c = 30;
//定义指针变量p1,保存a的地址
int* p1 = &a;
//定义指针变量p2,保存b的地址
int* p2 = &b;
//定义指针变量p3,保存c的地址
int* p3 = &c;
//通过p1,把a的值改为50,并通过p1输出a的值
*p1 = 50; printf("%d\n",*p1);
//通过p1,p2,p3把c=a+b;(不允许出现a,b,c)并通过p1,p2,p3输出a,b,c的值
*p3 = *p1 + *p2; printf("%d,%d,%d\n",*p1,*p2,*p3);
//通过p1,p2,p3把c=a*b;(不允许出现a,b,c)并通过p1,p2,p3输出a,b,c的值
*p3 = *p1**p2; printf("%d,%d,%d\n", *p1, *p2, *p3);
return 0;
}
4. 指针变量:1.也是变量,值可以改变;2.也可以获取它的地址.
它和普通变量的区别:1.指针变量能解引用,普通变量不可以
指针类型必须严格相同才能赋值
5.指针的大小:x86:32位平台,指针4字节;x64/arm64:64位平台,8字节
int main()
{
printf("%d\n", sizeof(char*));//4
printf("%d\n", sizeof(unsigned short*));//4
printf("%d\n", sizeof(int*));//4
printf("%d\n", sizeof(float*));//4
printf("%d\n", sizeof(double*));//4
printf("%d\n", sizeof(long****));//4
printf("%d\n", sizeof(long long*));//4
return 0;
}
5.修改指针的方向
int main()
{
int a = 10;
int b = 20;
int c = 30;//必须保证同一种类型
int* p = &a;
*p= 60;
printf("%d\n", *p);
p = &b;
*p = 70;
printf("%d\n", *p);
p = &c;
*p = 80;
printf("%d\n", *p);
return 0;
}