C++中指针储存一个地址
声明:
datatype* p; datatype表示指针指向的数据类型。
int num=0;
int* pnum=#
//&是地址运算符,&num表示num这个变量存储的地址
//int*声明了pnum是一个指针变量
C++还有一种指针类型:
void* p;//表示我们知道这是指针但是不知道数据类型
//到现在为止没有遇见过
解引用符号 *:
int num=1024;
int* pnum=#
cout<<*pnum<<endl;//结果是num的值:1024
指针的运算:
指针是一个变量,可以进行多种运算,但是运算时要小心容易出现错误。
int num=1024;
int* pnum=#
//地址后移:
//cout<<*pnum<<endl;
cout<<pnum<<" ";
pnum=pnum+sizeof(int);
cout<<pnum;//输出 0x61ff08 0x61ff18
改变变量num:
int num=1024;
int* pnum=#
//变量num的改变
(*pnum)++;//此时num的值变为1025,注意:不加括号可能出错。
几种指针:
常量指针:声明之后不可更改(指向一个不变的内存位置,但该位置存储的内容可以改变)
声明常量指针时数据类型在前,并且声明和初始化必须在同一行
数组名就是常量指针。
//正确声明常量指针:
int num=1024;
int* const pnum=#
//错误声明:
const int* pnum=#//指针不是常量,但是不能通过该指针改变该数据。
num=64;//no problem,可以改变变量值
*pnum=100;//wrong
指针函数:
- 指针作为参数
void change(int* p) { (*p)++; } int main() { int num=1024; int* pnum=# change(pnum); cout<<num;//输出1025 return 0; } - 指针作为返回结果
int* change(int* p) { p=p+1;//指针向后移动 //指针p为常量指针 p+1的结果更像是指向下一个数组元素 return p; } int main() { int list1[3]={1,2,3}; int* plist1=list1; plist1=change(plist1); cout<<*plist1<<endl;//输出2 return 0; }this指针:访问其他数据域的参数。
Circle::Circle()
{
double r=1;
}
Circle::Circle(double r)
{
this->r=r;//调用上一个作用域的r
}
指针的作用域:当被改变的是指针指向的地址时即修改的是指针本身时,修改只在函数内生效。但是修改的是指针指向的数据的数值时,其不被函数作用域限制。
本文介绍了C++中的指针基础知识,包括指针存储地址、解引用操作、指针运算、常量指针的使用以及指针在函数中的应用。同时,讨论了指针作为参数传递时对变量值和指针本身的修改影响。
16万+

被折叠的 条评论
为什么被折叠?



