C语言指针p,*p,**p以及&p在内存中的关系

C语言指针p,*p,**p以及&p在内存中的关系

#最小的访问单元“字节”
要了解数据存储在内存中的关系就要知道,数据在内存中怎么存储的。首先我们需要知道数据在内存里的存储方式,计算机里所有的数据是以二进制0、1形式进行位存储,在物理层面上的表现就是节点高低电位的变化,通俗点讲就是一个位节点的两个状态0或者1,2个位节点就能组成00,01,10,11四个状态,而人可以对每个状态进行定义,张三,李四,王二,麻子。在计算机中,8位就可以表示美国人常用的一个字符,因此1B(byte)=8b(bit),一字节等于八位就流传下来了,而一字节能存储的数据是2^8=256个状态。计算机能访问的最小单元就是一字节,能修改的最小单位是一位。

#内存地址”
为了快速方便的寻找到特定存储空间的数据,于是对每个字节空间进行地址编号,通过特定的寻址方式,找到对应空间的数据内容。可以简单的理解为一个字节空间由内存分配的地址和可修改的数据两部分组成。

#指针运算符”
指针运算符有两个,取内容(*)和取地址(&)。以下图为例。

程序:

int a=10;
int *p=&a;
printf(“a的地址为:&a=%x\n”,&a);
printf(“指针p的值为:p=%x\n”,p);
printf(“指针p的地址为:&p=%x\n”,&p);
printf(“p指向的值为:*p=%d\n”,*p);

结果:

a的地址为:&a=60fefc
指针p的值为:p=60fefc
指针p的地址为:&p=60fef8
p指向的值为:*p=10
Process returned 0 (0x0) execution time : 0.015 s
Press any key to continue.

p表示指针变量自身存储空间的数据60fefc,&a表示的值同样也是60fefc,而&p的地址为60fef8。我们可以发现指针变量是一种专门存放地址的变量,而取内容符号*,则是提取的指向地址里对应的数据内容。
同理**p1也是一样的,与*p的区别在于,p的内容可以是任意格式字符,而p1的内容为地址。在这里插入图片描述

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值