指针介绍
内存被划分为了若干个内存单元,一个内存单元的大小是一个字节(8bit)
每个内存单元都有编号,这个编号被称为内存地址/指针
指针就是内存地址,口语中说的指针通常指的是指针变量。
指针变量
内存地址或指针可以存放在一个变量中,这个变量被称为指针变量
指针变量是用来存放内存地址的变量
指针变量写法:数据类型* 指针变量名 = &变量名
*的意思是表示这个变量是指针
数据类型是取地址的变量的类型
指针变量的大小是由所存储的地址大小来决定的(其实就是内存地址的位数)
解引用的介绍
解引用就是通过指针变量所存储的内存地址找到原来的数据,这时对指针变量进行修改会修改原来的数据
换一种说法:通过指针变量中存储的地址,就能找到指针指向的空间
*指针变量名:代表解引用操作
直接将字符串赋给指针变量
直接将字符串赋给指针变量,实际的含义是,把字符串地址(字符串数组首元素地址)赋给了指针变量
例如:char* p = "abcdef"; *p的是a的地址
指针类型的作用
指针的类型决定了指针向前或者向后走一步有多大(距离)。
指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。
整数指针解引用访问4个字节(4个内存单元)
字符指针解引用访问一个字节(1个内存单元)
比如: char* 的指针解引用就只能访问一个字节,而 int* 的指针的解引用就能访问四个字节。
虚拟地址空间与指针变量大小关系
32位机器,支持32位虚拟地址空间,产生地址就是32bit位空间存储,因此指针变量大小是32位 4字节
64位机器,支持64位虚拟地址空间,产生地址就是64bit位空间存储,因此指针变量大小是64位 4字节
在32位的机器上,有32根地址线,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小就应该是4个字节。
因此一共有2的32次方个01组合确定不同的内存单元,一共可容纳2的32次方字节容量-->4gb
在64位机器上,有64个地址线,那一个指针变量的大小是8个字节,才能存放一个地址。
因此一共有2的64次方个01组合确定不同的内存单元,一共可容纳2的64次方字节容量
本文介绍了计算机内存的基本单位——字节及其地址的概念,详细解释了指针变量的定义与使用,包括指针变量的声明、解引用操作以及不同类型的指针对内存的操作范围。

被折叠的 条评论
为什么被折叠?



