(13)指针
要想了解指针,就要先了解内存的概念。
内存:
内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中运行的。
所以为了有效的使用内存,就把内存划分一个个小的内存单元,每个内存单元的大小是1个字节。
为了能够有效的访问内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
生活中,我们通过地址来找到空间(房间)目标。
内存也是如此,把一整块内存划分为一个小的内存单元后,要进行编号。
思考:1、如何产生地址?
电脑中的32位、64位指有32/64根地址线/数据线(即电线),通电后有电信号,再转换数字信号。
这时,32根地址线上产生的所有电信号可能性是从全0到全1的32个二进制位可能性是2的32次方
而这些二进制序列,如果通过地址线可以很好产生的话,那把这样的二进制序列作为每一个内存单元的编号,那这样就可以产生2的32次方个内存编号(编号:可以把二进制转十进制)
每个编号对应内存块的话,这样就是内存块编号,那对应的语法就是编号为内存块的地址。
2、内存单元是多大?
首先,要知道内存的单位——
如果一个空间是一个比特位,那位2的32次方种编号对应的内存块大小从bit转换为gb的话为0.5gb。(关于转换可以用计算器改为编程模式来计算)
这时,会发现2的32次方个地址,只能访问0.5gb,而当前的内存有4GB、6GB等
即使在32位计算机下,0.5GB也访问不了
这时,一个bit不太合适。
那如果换成字节的话,这时0.5×8=4GB,就比较合适了
设计内存的时候,如果要把内存划分的话,所划分的内存块的大小是一个字节为单位的。(即一个空间为一个字节)
这时,我们再写int时,向内存申请4个字节,而4个字节都有对应的编号。
如:
int a=10;
这里申请4个字节,可这4个字节又是放哪呢?想看地址,又该怎么拿呢?
(这时,联想到之前“&”取地址符号)
如:&a——取出a的地址
i