1 指针的基本概念
指针的作用: 可以通过指针间接访问内存
-
内存编号是从0开始记录的,一般用十六进制数字表示
-
可以利用指针变量保存地址
2 指针变量的定义和使用
指针变量定义语法: 数据类型 * 变量名;
int main() { //1、指针的定义 int a = 10; //定义整型变量a //指针定义语法: 数据类型 * 变量名 ; int * p; //指针变量赋值 p = &a; //指针指向变量a的地址 cout << &a << endl; //打印数据a的地址 cout << p << endl; //打印指针变量p //2、指针的使用 //通过*操作指针变量指向的内存;*号是是用来解引用的 cout << "*p = " << *p << endl; system("pause"); return 0; }
3 指针所占内存空间
提问:指针也是种数据类型,那么这种数据类型占用多少内存空间?
示例:
int main() { int a = 10; int * p; p = &a; //指针指向数据a的地址 cout << *p << endl; //* 解引用 cout << sizeof(p) << endl; cout << sizeof(char *) << endl; cout << sizeof(float *) << endl; cout << sizeof(double *) << endl; system("pause"); return 0; }
总结:所有指针类型在32位操作系统下是4个字节,64位操作系统下是8个字节。
4 空指针和野指针
空指针:指针变量指向内存中编号为0的空间
**用途:**初始化指针变量
**注意:**空指针指向的内存是不可以访问的
示例1:空指针
int main() { //指针变量p指向内存地址编号为0的空间 int * p = NULL; //访问空指针报错 //内存编号0 ~255为系统占用内存,不允许用户访问 cout << *p << endl; system("pause"); return 0; }
野指针:指针变量指向非法的内存空间
示例2:野指针
int main() { //指针变量p指向内存地址编号为0x1100的空间,我们没有申请这个这个内存地址 int * p = (int *)0x1100; //访问野指针报错 cout << *p << endl; system("pause"); return 0; }
总结:空指针和野指针都不是我们申请的空间,因此不要访问。