一、简介
指针=(内存)地址
指针变量=存放内存地址的变量
二、定义指针变量
1.格式:
类型名 *指针变量名;
解:“*”:定义指针变量的说明符
2.定义指针后
系统会为指针分配一个内存单元,内存空间的大小由根据指针所指的数据类型决定。
3.指针指向的数据类型与指针的移动和运算相关
如:“使指针移动1个位置”或“使指针值+1”
若指向整型:地址移动2个字节或+2个字节
若指向实型:地址移动4个字节或+4个字节
三、指针的运算
1.C++有2个专门用于指针的运算符
& 取地址运算符
* 取值运算符
2.用法
& 常放在变量前面
作用:取该变量的地址
* 常放在指针变量前面
作用:取该指针所指内存单元中的内容
int a=8;//声明整型变量a,初值为8
int *p=&a;//声明指向整型变量的指针p,其值为a的地址
int b=*p;//声明整型变量b,并将指针变量p所指存储单元的内容赋值给b
int *pl;//声明指向整型变量的指针p1
pl=p;//将指针变量p的地址赋给pl,p1也指向a的存储单元
//它等价于pl=&a
3.注意
1、定义指针变量之后,必须要对其初始化,否则无意义
2、指针变量的类型必须与其存放的变量类型保持一致
3、指针变量之间赋值,必须使其类型相同
4、指针变量只能赋一个指针的值,若赋的是一个变量的值或常量的值,而不是变量的地址,系统会以这个值作为地址,根据这个“地址”读写的结果将是致命的
4.应用
#include <iostream>
using namespace std;
int main()
{
int a,*pi;
pi=&a; //pi指向a
*pi=8; //pi所指存储单元数据为8
cout<<"a的地值为:"<<&a<<endl; //输出变量a的地址,不同机器值不同
cout<<"pi的值为:"<<pi<<endl; //输出变量pi的地址,不同机器值不同
cout<<"a="<<a<<endl; //输出变量a的值
a=10;
cout<<"a="<<a<<endl;
cout<<"*pi="<<*pi<<endl;//输出pi所指存储单元的数据
return 0;
}
运行结果: