C语言中p, *p, &p, &*p, **p的理解-初级

*(星号)间接寻址运算符,通过一个内存地址访问一个值(一种操作)。

&(数学逻辑符号:与/和):取地址运算符,获取一个值的内存地址(一种操作)。

直接寻址:直接通过变量名来获取变量的值,或直接用变量的地址来存储值,例如:

scanf("%d", &a);        // 把值通过a的地址直接存储到变量a里。

printf("%d", a);           // 直接通过变量名a获取a中的值。

间接寻址:变量a的内存地址存放在指针变量p中。先通过指针变量名p获取p中的地址数据,再通过这个地址数据访问a的值。

int a = 99;

int *p = &a;

所以:

指针变量名:

p:存放a的内存地址数据(16进制)。// 输出类型为%p,数字99在内存中存放位置的地址数据。

操作:

*p:获取指针变量p中存放的地址数据对应的存放位置(即a)的值。// 输出类型为%d,结果为99。

&p:获取指针变量p的内存地址数据。// 输出类型为%p,结果为16进制的8位地址。

&*p:首先通过p获取a的值,然后获取a的内存地址数据。// 输出类型为%p,与p的值相同。

**p:存放指针变量p的地址空间的地址。?

使用指针时的3条准则:

1、要清楚每个指针指向的位置,且必须指向一个有意义的位置。

2、要清楚每个指针指向的位置里的内容。

3、不要使用未初始化的指针变量。

  • 13
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值