C++指针

本文介绍了C++中的指针基础知识,包括指针存储地址、解引用操作、指针运算、常量指针的使用以及指针在函数中的应用。同时,讨论了指针作为参数传递时对变量值和指针本身的修改影响。

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=&num;

//地址后移:
    //cout<<*pnum<<endl;
    cout<<pnum<<" ";
    pnum=pnum+sizeof(int);
    cout<<pnum;//输出 0x61ff08 0x61ff18

改变变量num:

int num=1024;
int* pnum=&num;

//变量num的改变

(*pnum)++;//此时num的值变为1025,注意:不加括号可能出错。

几种指针:

常量指针:声明之后不可更改(指向一个不变的内存位置,但该位置存储的内容可以改变)

声明常量指针时数据类型在前,并且声明和初始化必须在同一行

数组名就是常量指针。

//正确声明常量指针:
int num=1024;
int* const pnum=&num; 

//错误声明:
const int* pnum=&num;//指针不是常量,但是不能通过该指针改变该数据。
num=64;//no problem,可以改变变量值
*pnum=100;//wrong

指针函数:

  1. 指针作为参数
    void change(int* p)
    {
        (*p)++;
    }
    int main()
    {
        int num=1024;
        int* pnum=&num;
        change(pnum);
        cout<<num;//输出1025
        return 0;
    }
    

  2. 指针作为返回结果
    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
}

指针的作用域:当被改变的是指针指向的地址时即修改的是指针本身时,修改只在函数内生效。但是修改的是指针指向的数据的数值时,其不被函数作用域限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值