【C语言】一、指针详解

一、指针是什么

指针是编程语言中的一个对象,利用地址,他的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的成为指针。意思是通过它能找到以它为地址的内存单元

那么通过地址能找到值,地址的内存单元是怎么产生的呢?
如果是32机器,通电之后会产生电信号,点信号有正电和负电,电信号找出数字信号之后,其实就是32个0 1 组成的二进制序列,那么32个01组成的二进制序列有多少种可能性?

00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000001
00000000 00000000 00000000 00000002
… … … 
11111111 11111111 11111111 11111111

这里就有232那么多的地址,这是32位机器上的,
在64位上更大

⚠️注意:

  1. 在32位的机器上,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所 以一个指针变量的大小就应该是4个字节。
  2. 那如果在64位机器上,如果有64个地址线,那一个指针变量的大小是8个字节,才能存放一个地址。
int a = 10; //这个a占4个字节
int* pa = &a; //拿到的是a的4个字节中第一个字节的地址

二、指针和指针类型

  1. 指针类型决定了指针解引用的权限有多大, 如果将一个int型指针的值传到char型指针里,但由于char型只能接受一个字节在这里插入图片描述
    上图中int型指针,p+1为跳过一个整型,也就是4个字节
    而char型指针

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值