指针的基本定义

1.指针是什么?

指针是内存中一个最小的单元编号,也就是地址(一个内存单元的大小是一个字节)

int a = 10;  //整型是四个字节,char一个字节占用四个字节的空间 对a取地址是a的首地址
int* pa = &a;  //pa是一个指针变量,是用来存放地址的 

指针的字节大小指针的字节大小是根据计算机的体系结构来决定的。在32位体系结构中,指针的大小通常为4个字节,而在64位体系结构中,指针的大小通常为8个字节。

如何编码

32位机器上,给32根地址线,假设每根地址线寻址时产生高电压或低电压(1或0)

00000000000000000000000000000000

每八个0代表8个bit位,也就是1字节。

2的32次方个地址

总结(在32号位的平台上)
  • 指针变量使用开存放地址的,,地址是用来标识唯一一个地址空间的

  • 如果在一个32个01组成而二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小就是4个字节。

2.指针和指针的类型

X86 -32位的环境

X64 -64位的环境

指针在32位机器上都是4字节,那么区分指针的意义?

指针类型的意义
int a = 0x11223344; //0x表示16进制在16进制中每一个数字都占用4个bit
//原因对于16进制中比如f的表示 1111,所以都占用四个bit
//16进制的地址改为2进制00010001001000100011001101000100(四个字节)
​
int* pa = &a;
*pa = 0;
//a由 44 33 22 11 被修改为00 00 00 00
char* pc = &a;
*pc = 0;
//a由 44 33 22 11 被修改为00 33 22 11

结论**1**:

  • 指针类型决定了指针在被解引用的时候访问几个字节

  • int* 指针,解引用访问4个字节

  • char*指针,解引用访问1个字节;

int a = 0x11223344;
    int* pa = &a;
    char* pc =(char*)&a;
    printf("pa = %p\n", pa);
    printf("pa+1 = %p\n", pa+1);
    printf("pc = %p\n", pc);
    printf("pc+1 = %p\n", pc+1);

结论2

 

  • 在这里可以看出对于指针类型决定了指针在+-1操作时,跳过的字节数 比如对于int*+1时跳过4个字节 char*+1时跳过1个字节

  • 决定了指针的步长

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值