C语言-指针的初步认识(慢慢补充)

内存被划分为小单元,每个单元1字节并有唯一地址。32位机器能管理2^32个字节,64位更多。存储变量如10需4个单元,最小地址代表其位置。指针变量如pa存放地址,*pa解引用得到变量a的值。指针大小与机器位数相关,32位4字节,64位8字节。
摘要由CSDN通过智能技术生成

        内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。 为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。

        简而言之两点:1、内存首先被划分成一个个小的内存单元

                                 2、内存单元进行编号

        内存单元的编号 - 地址 - 指针

        可以讲 指针就是地址        地址就是指针

那么有个问题:一个内存单元的大小是多少呢?答案是一个内存单元的大小是1个字节。     

   如假设这是一个8G内存,编号为0、1、2、3···每个单元大小为1字节。

下面在讨论一下机器工作时内存空间问题:

如32位机器,其有32根地址线,其中高电平 - 1,低电平 - 0

32为机器可管理2^32个字节空间

比如:00000000000000000000000000000001→32bit - 4字节

同理:64位机器可以管理的空间更多

变量的创建是需要向内存申请空间的,int整型大小位4字节,那么就需要向内存申请4个内存单元(即4字节)来进行‘10’的存储。

那么问题来了,存储一个‘10’需要4个内存单元,每个内存单元都有一个编号(地址),那如果需要知道‘ 10 ’的地址,应该是什么呢。

 

 ‘ 10 ’共占用4个字节单元,其中用最小的那一个表示‘ 10 ’的地址。即0x012FF850(地址使用十六进制表示的)

0000 0000 0000 0000 0000 0000 0000 0000

0x 00 00 00 0a 十六进制表示 ‘10’

 

pa是用来存放a的地址//pa是存放指针的,所以在C语言中pa又叫做指针变量(把地址也叫指针)

int *,其中int是在说明pa指向的a是int类型的、、*说明pa是指针变量

 

 其中*pa是解引用操作符 - 通过pa找到pa指向的a,*pa就是a,由上图可见令*pa = 20,输出为20.

/在32位机器中,指针变量大小是4个字节。指针变量是用来存放指针的,指针就是地址

地址的存储需要多大的空间,指针变量的大小就是几个字节。

32位 - 32bit - 4字节

64位 - 64bit - 8字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值