目录
指针的基本概念
指针实际上就是内存地址
指针的作用:可以通过指针间接访问内存
1内存编号是从0开始记录的,一般用十六进制数字表示
可以利用指针变量保存地址
指针的定义及使用
指针定义的语法:数据类型 * 变量名;
例如:
int a = 10;
int *p;
p=&a;
等价于
int a = 10;
int *p=&a;
解释:p存放的是a变量的地址,如下图:
指针的使用:
例:
int a = 10;
//指针定义的语法:数据类型 * 指针变量名
int * p;
//指针变量赋值
p = &a;//指针指向变量a的地址
cout << p << endl;//=a的地址
//使用指针,可以通过解引用的方式来找到指针指向的内存
//指针前加*代表解引用,找到指针指向的内存中的数据
*p = 100;//通过*操作指针变量指向的内存
cout << a << endl;//100
指针所占内存空间
在32位系统下,指针是占4个字节空间大小,不管是什么数据类型
在64位系统下,指针是占8个字节空间大小,不管是什么数据类型
空指针和野指针
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的
野指针:指针变量指向非法的内存空间
在程序中,尽量避免出现野指针
总结:空指针和野指针都不是我们申请的空间,因此不要访问
const修饰指针
const修饰指针有三种情况:
- const修饰指针 ---常量指针
- const修饰常量 ---指针常量
- const即修饰指针,又修饰常量
1 常量指针:const int *p=&a;
特点:指针的指向可以修改,但是指针指向的值不能修改
2 指针常量:int * const p=&a;
特点:指针指向的值可以修改,但指针的指向不可以修改
3 const int * const p=&a;
特点:指针指向的值和指针的指向都不能修改
技巧:看const右侧紧跟着的是指针还是常量,是指针就是常量指针,是常量就是指针常量
指针和数组
作用:利用指针访问数组中元素
指针与函数
作用:利用指针作函数参数,可以修改实参的值
地址传递:
如果是地址传递,可以修改实参的值
指针、数组、函数
例:编写一个函数,利用冒泡排序,实现对整型数组的升序排序
int arr[10]={4,3,6,9,1,2,10,8,7,5};