指针定义:
指针是一个值为内存地址的变量(或数据对象)
内存地址==身份证号码——能够唯一标识该变量的身份
int* ptr_year;
int year=2023;
ptr_year=&year;//赋值——将year的地址给ptr_year
*ptr_year=year;//将year的值给ptr_year,ptr_year里面的值将为year,地址不变
int num=1024;
int* prt_num;
ptr_num=#//赋值——将num的地址给ptr_num,*代表取值
int num=1024;
int * ptr_num;
ptr_num=#
*ptr_num=1111;//直接改变num的值——num=111;
注:
&为取地址符;int *——整型指针;*——可以理解为指针
int *pre_year里面的值为地址
指针的执行效率比不上普通变量名的执行效率
char ch ='a';
char* ptr_ch =&ch;//ptr_ch会输出ch的值
cout<<(void *)ptr_ch<<"\t"<<*ptr_ch<<endl;//强制转换为任意的数
空指针
空指针不指向任何对象,在试图使用一个指针之前可以首先检查是否为空
用法
int *prt1=nullptr;//==int *ptr1=0;
int *prt2=0;//直接将prt2初始化为字面常量0
int *prt3=NULL;//==int *prt3=0;
int *prt4;//int *prt4这个会随机定义一个地址,很危险,为野指针,需要避免
注:最好初始化所有指针
一种特殊的指针类型,可以存放任意对象的地址
double objnum=2.14;
double *ptr_obj=&objnum;
void *vptr_obj=&objnum;//可以指向任意类型
cout <<(ptr_obj==vptr_obj)<<endl;
注:
void *指针存放一个内存地址,地址指向的内容是什么类型不能确定,无法直接修改值
void*类型指针一般用来:拿来和别的指针比较、作为函数的输入和输出:赋值给另一个void*指针
小结
注:
所有文章都是自己学习C++的笔记,内容来自老九学堂,如有侵权立删