目录
一、指针的基本概念
二、指针变量的定义和使用
三、指针所占内存空间
四、空指针和野指针
五、const修饰指针
六、指针和数组
七、指针和函数
指针的作用:可以通过指针间接访问内存
指针变量定义语法:数据类型 * 变量名;
示例:
#include
#include
using namespace std;
int main()
{
// 定义指针
int a=10;
int *p=NULL;
// 让指针记录变量a的地址
p=&a;
cout<<"a的地址为:"<<&a<
运行结果:
在32位操作系统下,占用4个字节空间,64位下占用8个字节。
示例:
#include
#include
using namespace std;
int main()
{
// 定义指针
int a=10;
int *p=NULL;
// 让指针记录变量a的地址
p=&a;
// 在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型
// 在64位操作系统下,指针是占8个空间大小
cout<<"指针类型的数据占用的空间大小为:"<
运行结果:
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的
示例:
#include
#include
using namespace std;
int main()
{
// 空指针
// 1、空指针用于给指针变量进行初始化
int *p=NULL;
// 2、空指针是不可以进行访问的
// 0~255之间的内存编号是系统占用的,因此不可以访问
// 访问空指针报错
cout<<*p<
野指针:指针变量指向非法的内存空间
示例:
#include
#include
using namespace std;
int main()
{
// 野指针
// 在程序中,尽量避免出现野指针
int *p=(int *)0x1100;
cout<<*p<
注意:空指针和野指针都不是我们申请的空间,因此不要访问
const修饰指针有三种情况:
示例:
#include
#include
using namespace std;
int main()
{
// 1、const 修饰常量
int a=10;
int b=10;
// const修饰的是指针,指针指向可以改,指针指向的值不可以更改
const int *p1=&a;
p1=&b; // 正确
// *p =20 错误
// 2、const修饰常量
// 指针的指向不可以更改,指针指向的值可以改
int * const p2=&a;
*p2=100;// 正确
// p2=&b // 错误,指针的指向不可以修改
// 3、const修饰指针和常量
// 指针的指向和指针指向的值都不可以更改
const int * const p3=&a;
// *p3=10; // 错误
// p3=&b; // 错误
return 0;
}
作用:利用指针访问数组中的元素
示例:
#include
#include
using namespace std;
int main()
{
// 指针和数组
// 利用指针访问数组中的元素
int arr[10]={1,2,3,4,5,6,7,8,9,10};
cout<<"遍历这个数组"<
运行结果:
作用:利用指针作为函数参数,可以修改实参的值
示例:
#include
#include
using namespace std;
// 实现两个数字交换(值传递)
void swap01(int a,int b)
{
int temp=a;
a=b;
b=temp;
cout<<"swap01 a="<运行结果: