指针
int a = 10;
int *p = &a;
在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型,在64位操作系统下,指针占8个字节空间大小
空指针和野指针
空指针: 指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内容是不可以访问的
//1.指针变量初始化
int *p = NULL;
//不可以访问 0~255之间编号是系统占用,因此用户不可以访问
*p = 100; //错误 没有权限
野指针:指针变量指向非法的内存空间
int * p =(int *) 0x1100; // int * 将十六进制数0x1100强转为地址
cout << *p << endl;
//编译时检查不出错误,但是运行时会发生异常,读取访问权限冲突
const 修饰指针
1.常量指针 —const int *p = &a
特点: 指针的指向可以修改, 但是指针指向的值不可以修改
便于方便理解 ,自己所记忆方法为,const 修饰的最近的是int, int 是变量,也就是值,所以值不可以修改,常量指针,常量不可以修改.
int a = 10;
int b = 10;
int *p = &a;
const int *p = &a;
*p = 20;//错误.
p = &b; //正确
指针常量:----int * const p = &a;
特点:指针的指向不可以改,指针指向的值可以改
int a = 10;
int b = 10;
int *p = &a;
int * const p = &a;
*p = 20;//正确
p = &b;//错误
const 修饰指针p,所以指针的指向不能修改
const 即修饰指针又修饰常量 —const int * const p = &a;
特点: 指针指向和指针修饰的值都不可以修改
指针遍历数组
int arr[]= {1,2,3,4,5,6,7,8,9};
int * p = arr; //首地址
for (int i = 0; i < 10; i++)
{
//cout << arr[i] << endl;
cout << *p << endl;
p++;