16.指针-指针的基本概念
16.1 知识点
数据在内存中如何被存储
位(bit)是计算机中最小的内存单位,字节(byte)是计算机中最小的存储单位。
1 byte = 8 bit。
计算机内存中每个字节都有一个唯一的内存地址。无论是32位还是64位的计算机系统,内存地址都是按字节编号的。这意味着,计算机的内存地址是以字节为单位的。
什么是内存地址?
系统会按照字节对每个内存单元进行编号。所谓的内存单元,你可以理解为一个个带有门牌号的小房间。想要使用内存,就需要知道房间的门牌号码。
举个例子:
声明一个整型变量
int i = 2;
int
占4个字节,系统就会为该变量分配4个小房间,4个小房间的门牌号码为5001~5004。
接着我们再声明一个整型变量
int j = 10;
j
同样占4个字节,系统会在内存中接着为 j
分配小房间,5005~5008。
当我们要访问 i
和 j
的具体存储信息时,首先要找到存储 i
和 j
对应的房间门牌号码(内存单元)。
- 读取
i
时,找到i
的起始地址5001,因为整型占4个字节,因此系统会从5001开始读取4个字节出来作为i
的值(5001~5004内存单元)。 - 同样读取
j
时,j
的起始地址为5005,也占4个字节,系统会从5005开始读取4个字节作为j
的值(5005~5008内存单元)。
内存单元的门牌号码,在程序语言中称之为内存地址(简称地址)。通过地址(门牌号码)我们就可以访问到指定的内存单元。所以可以形象的认为,地址是指向内存单元的。
指针是什么?
为了方便记忆,前辈们制定了一个规则,我们将指向变量地址的对象形象地称为该变量的“指针”。
既然指针是指向内存地址的,那么我们便可以通过指针找到对应的内存单元。
在程序中,指针是一个变量,其值为另一个变量的地址。我们可以通过指针间接地访问和修改该变量的值。
因为我们可以通过指针得到它指向的地址(内存地址),从而得到对应的内存单元,而内存单元中存储的就是变量的具体值。所以我们可以通过指针修改变量的值。
说人话:
指针变量就是存储其他变量地址的变量。我们不仅可以通过指针得到其他变量的地址,还可以根据该地址得到其他变量具体的值。
16.2 知识点代码
Lesson16_指针_指针的基本概念.cpp
#include <iostream>
using namespace std;
int main()
{
std::cout << "指针的基本概念\n";
#pragma region 知识点一 数据在内存中如何被存储
//位(bit)是计算机中最小的内存单位
//字节(byte)是计算机中最小的存储单位
// 1byte = 8bit
//计算机内存中 每个字节都有一个唯一的内存地址
//无论是32位还是64位的计算机系统,内存地址都是按字节编号的
//这意味着,计算机的内存地址是以字节为单位的
//什么是内存地址?
//系统会按照 字节 对每个 内存单元 进行编号
//所谓的内存单元,你可以理解为一个个带有门牌号的小房间
//想要使用内存,就需要知道房间的门牌号码
//比如
//声明一个整型变量
// int i = 2;
// int 占4个字节,系统就会为该变量分配4个小房间
// 4个小房间的门牌号码为 5001~5004
//
//接着我们再声明一个整型变量
// int j = 10;
// j同样占4个字节,系统会在内存中接着为j分配小房间
// 5005~5008
//也就说当我们要访问i和j具体存储的信息时
//首先要找到存储i和j对应的房间门牌号码(内存单元们)
// 读取i时,找到i的起始地址5001,因为整型占4个字节
// 因此系统会从5001开始读取4个字节出来作为i的值(5001~5004内存单元)
//
// 同样读取j时,也是一样,j的起始地址为5005,也占4个字节
// 系统会从5005开始读取4个字节作为j的值(5005~5008内存单元)
//而内存单元的门牌号码,我们在程序语言中称之为内存地址(简称地址)
//通过地址(门牌号码)我们就可以访问到指定的内存单元
//所以可以形象的认为 地址 是 指向 内存单元的
#pragma endregion
#pragma region 知识点二 指针是什么?
//为了方便记忆,前辈们制定了一个规则
//我们将指向变量地址的对象 形象的称为该变量的 “指针”
//既然 指针 是指向 内存地址 的,那么我们便可以通过指针找到对应的内存单元
//而在程序中
//指针是一个变量,其值为另一个变量的地址
//我们可以通过指针间接的访问和修改该变量的值
//
//因为我们可以通过指针得到它指向的地址(内存地址)
//从而得到对应的内存单元,而内存单元中存储的就是变量的具体值
//所以我们可以通过指针修改变量的值
//说人话:
//指针变量就是 存储其他变量地址 的变量
//我们不仅可以通过指针得到其他变量的地址
//还可以根据该地址得到其他变量具体的值
#pragma endregion
}
16.3 练习题
计算机中最小的内存单位和最小的存储单位分别是什么?
最小内存单位是bit(比特),表示二进制中的一个0或1。
最小内存存储单位是byte(字节),1byte=8bit,计算机中以字节为基本单位来存储数据。
如何在内存中定位一个字节?
在内存中一个字节就是一个内存单元,而内存单元都会有一个唯一的内存地址。而内存地址是用于标识字节的位置的。
因此我们通过内存地址来定位一个字节。内存地址类似门牌号的存在!
用最简洁的语言告诉我C++中指针是什么?
指针是一种变量,用于存储另一个变量的内存地址(门牌号)。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com