C语言的&取地址符,指针
指针
地址
c语言
编程技术
发布日期
2023-06-06
更新日期
2023-06-06
阅读次数 166
文章字数 855
什么是取地址符
取地址符,就是获取当前变量的内存地址,想要获得那个变量的地址,就用&后面跟上那个变量。
已知变量定义后,就会随机分配内存地址
举个例子:
#include <stdio.h>
int main(){
int *p;
int a; //定义变量a
p = &a; //p保存a变量的地址
printf("%d",p); //随机结果,如1848787812
return 0;
}
那么我们可以发现,&后面必须是一个变量,而不能是常量,有汇编基础的都知道常量是一个立即数,不是容器,没有地址。
每一次使用&,都会增加一级指针。
#include <stdio.h>
char x;
char* p1;
char** p2;
char*** p3;
char**** p4;
int main()
{
p1 = &x; //char*
p2 = &p1; //char**
p3 = &p2; //char***
p4 = &p3; //char****
return 0;
}
指针的用法
指针变量,保存的就是一个地址符
例如第一个例子中的 int *p; 则 p 就是该地址,如果想要取该地址保存的数据,则使用 *p,下面再演示一下:
#include <stdio.h>
int main()
{
int *p;
int a;
a = 10;
p = &a;
printf("a变量的地址是:%d
",p);
printf("a变量的值是:%d",*p); //如果a没有赋值,则可能会是随机值【因为释放的时候并非把值清零,而是去掉引用】
return 0;
}
a变量的地址是:-171105836
a变量的值是:32764
另外就*p的值而言,*p=a,和p=&a是等价的。但是实际地址是不同的,可以测试一下:
#include <stdio.h>
int main()
{
int *p;
int *p1;
int *p2;
int a;
a = 10;
p = &a;
*p1 = a;
p2= &a;
printf("p变量的地址是:%d,值是%d
",p,*p);
printf("p1变量的值是:%d,值是%d
",p1,*p);
printf("p2变量的值是:%d,值是%d
",p2,*p2);
return 0;
}
p变量的地址是:1697686996,值是10
p1变量的值是:1697687248,值是10
p2变量的值是:1697686996,值是10
文章作者: 朱丰华
文章链接: https://smart.52dixiaowo.com/blog/post-426.html
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。
指针
地址
c语言
发表评论
相关推荐