- 指针的用途
通过指针间接访问内存 - 指针的定义
数据类型 *变量名;
int a=10;
int *p;
p=&a; //p中保存了变量a的地址
int *p=&a; //与上同理
cout<<*P<<endl; //得到p指向的地址所存储的数据
- 空指针,野指针
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量,不可访问
int *p=NULL;
野指针:指针变量指向非法的内存空间
- const修饰指针
4.1const修饰指针——常量指针
int a=10;
int b=20;
const int *p=&a;//const修饰指针,指针指向可以改,指针指向的值不可以更改
p=&b;//正确
//*p=20;错误
4.2.const修饰常量——指针常量
int a=10;
int b=20;
int *const p=&a; //const修饰常量,指针指向不可以改,指针指向的值可以更改
*p=20; //正确
//p=&b;错误
4.3.const既修饰指针又修饰常量
int a=10;
int b=20;
const int *const p=&a; //const既修饰常量又修饰常量
//*p=20;错误
//p=&b;错误
- 指针和数组
int arr[5]={1,2,3,4,5};
int *p=arr; //访问数组首地址
- 指针和函数
利用指针作为函数参数,可以修改实参的值(地址传递)
void swap(int *p1,int *p2){
int temp=*p1;
*p1=*p2;
*p2=temp;
}
int main(){
int a=10;
int b=20;
swap(&a,&b);
}
- 指针和结构体
struct Student{
string name;
int age;
};
int main(){
Student s={"Mike",18};
Student *p=&s; //指针指向结构体变量s
cout<<p->name<<" "<<p->age<<endl; //访问结构体中的属性
return 0;
}