首先引入一些概念
内存
内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小都是一个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
为什么存在地址
为了提高效率,快速标识与定位。
左值与右值
空间 对应 左值
例:(对a来说)
a = 20;
//当把值赋给a时,是给a的空间写入20。
内容 对应 右值
例:(对a来说)
b = a;
//把a的内容赋给b。
指针和指针变量
什么是指针
指针就是地址,地址就是指针。
什么是指针变量
指针变量是变量。定义一个指针变量,是在内存中开辟一个空间,该空间里面存放地址。
如何使用
指针更多强调的是内容(对应右值),指针变量更多强调的是空间(对应左值)。判断一个指针和一个指针变量要通过判断它是左值还是右值。
int *p = &a; //定义了指针变量p
p = &b; //将b的地址放在p的空间
int *q = p; //定义了指针变量q,把p的内容(地址)给了q(空间)
大部分使用的都是指针变量,但是书中经常简称定义一个指针,这种说法并没有错,这时通过上下文,通过左值和右值进行判断。
指针和指针变量不一样,严格来说,定义一个指针是个错误的说法。但是,在日常生活中,还是将指针和指针变量混在一起使用,因为大部分人和书将指针和指针变量混在一起。既可以说定义一个指针,也可以说定义一个指针变量,它到底是什么需要自己判断。