C语言秃头笔记--初识指针

初识指针

想要了解指针,要先知道内存

内存:是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元大小为1字节

为了能够有效访问到内存的每个单位,就给内存单元进行了编号,这些编号就被称为该内存单元的地址

那么内存是怎么编号的呢?

在计算机中有32位和64位的计算机

而32位指的是32根地址线,地址线是物理线,可以通电,通电后会发出正负电,而正电为1,负电为0

所以电信号转换成数字信号,即1和0组成的二进制序列

而32个地址线产生的二进制序列的信号为32个全0,即0000 0000 0000 0000 0000 0000 0000 0000到1111 1111 1111 1111 1111 1111 1111 1111 ,而我们就可以把这样的序列作为一个内存的编号。

(0000 0000 0000 0000 0000 0000 0000 0000表示0,以此类推,一共有2的32次方个)当这个二进制序列成为一个内存的编号时,我们就把它称为这个内存的地址

一个内存单元又是多大空间呢?

假设一个内存单元是1bit,则一共有2的32次方个内存单元,那么2的32次方个比特是多大呢?

2的32次方bit=4294967296bit

/8=536870912 Byte

/1024=524288 Kb

/1024=512 Mb

/1024=0.5 Gb

因为C语言中最小的单位是1Byte(char),而1Byte=8bit,8bit就有8个地址,当时人们感觉不合适,有些过分细化了,所以最后决定一个内存单元是一个字节

 

那我们怎么在C语言中知道一个变量的具体地址呢?

c5161dd4295146968a339786bee4cb14.png

如图,当我们在编译软件中定义a时, 我们按F10调试,选择窗口-内存-内存1(1),在地址栏输入&a,即可拿到a的地址;或者选择窗口-监视-监视1(1),点击添加监视的项,输入&a即可

f1f7f0444b0e4d81b0aea6a942b7814b.jpg

 printf输出a的地址,当我们拿到a的地址时,我们发现a的地址也是一个值,那么我们怎么把它存起来呢?

如图,pa是用来存放地址的。

因为pa是指针变量,变量要有类型,如图

 

那么我们要a的地址能做什么呢?

f906994933674b05aa944c79ef3a1200.jpg

如图,我们可以通过a的地址找到a,并且间接的改变a的值 

 

如何计算指针变量的大小?

cabcca6aaf6549b8b75f6ee93362ed05.jpg

 如图,那么为什么是4呢?

因为指针的空间大小,取决于地址的存储需要多大空间,如:

32位计算机,是32个bit位组成的二进制序列,而32个bit就是4byte

64位计算机同理,就是8byte

即当你在64位计算机上求指针大小,则为8

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值