指针

阅读量: 256 编辑

计算机中所有的数据都是以二进制的形式存放在内存中的,不同类型的数据占用的内存大小(二进制长度)也是不同的。

C++中的数据类型,比如 int、char、 double 。例如 int 占用四个字节(Byte)、char占用个字节、double占用八个字节。(参考文末附录,1Byte = 8Bit)。

计算机对数据的每个字节进行编号,就像门牌号一样,而且每个字节的编号都是唯一的,根据编号就能定位到某个字节。编号一般用十六进制表示,如下:

地址从0开始依次增加,对于32位环境下,应用程序能够申请使用的内存是4G(232),所以最小地址是 0x00000000,最大地址是 0xFFFFFFFF。

一、什么是指针

我们将内存中字节的地址(编号)称为指针。所以当我们提到指针的时候,它指代的就是地址。

#include <iostream>
using namespace std;

int main(){
	int a = 100;
	
	//变量a的值 
	cout << a << endl;//100
	
	//变量a在内存中的地址 
	cout << &a << endl;//0x6ffe1c
	
	return 0;
} 

0x6ffe1c 就是 0x006ffe1c,当然在运行的时候这个值并不是固定的,每次输出可能对应的值不一样。

二、指针变量

数据在内存中的地址,称为指针,如果一个变量存储了这个数据的指针(地址),则称为指针变量。

指针变量,也是变量,和普通的变量定义格式基本一致。

  • 只不过需要在变量名前面加上一个星号 *

  • 指针变量存储的数据类型的地址

指针变量的定义语法是:

type *name;

比如:

int *a;	//a是存储整数类型所在地址的指针变量
int b;

你可以把 int* 看成一个整体,更方便理解一些,int*表示指针类型。

int* a;	//这种写法也可以,初学者更好理解
int b;

但是,我们习惯写成 int *a,因为 *a 的结果是 int 类型的值,对值的操作更常见。

#include <iostream>
using namespace std;

int main(){
	int b = 100;
	
	int *a = &b; 		//b的地址值放到指针变量a中,叫指针变量赋值
	cout << *a << endl;	//取值 100
	cout << a << endl; 	//指针变量a的值是地址 0x6ffe14(也就是b的地址) 
	
	return 0;
} 

也就是说,针对不同的数据类型,都可以有对应的指针变量。

附录:C++数据类型

1562011590721568.png

最大值和最小值是这个数据类型表示的大小范围。

爱码岛编程公众号
微信扫码关注
爱码岛编程小程序
微信扫码打开
苏ICP备13052010号
©2023 南京匠成信息科技有限公司