C++学习之指针的使用详解

 更新时间:2023年03月02日 08:58:47   作者:NDX2004  
这篇文章主要为大家详细介绍了C++中指针的相关知识,文中的示例代码讲解详细,对我们的学习或工作有一定的价值,感兴趣的小伙伴可以了解一下

C++中指针储存一个地址

声明:

datatype* p;  datatype表示指针指向的数据类型。

int num=0;
int* pnum=#
//&是地址运算符,&num表示num这个变量存储的地址
//int*声明了pnum是一个指针变量

解引用符号 *:

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;
}

3.this指针:访问其他数据域的参数。

Circle::Circle()
{
    double r=1;
}
 
Circle::Circle(double r)
{
    this->r=r;//调用上一个作用域的r
}

到此这篇关于C++学习之指针的使用详解的文章就介绍到这了,更多相关C++指针内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++简单输出钻石菱形图效果

    C++简单输出钻石菱形图效果

    这篇文章主要介绍了C++简单输出钻石菱形图效果,涉及C++简单的数组操作与图形打印技巧,需要的朋友可以参考下
    2016-05-05
  • C++实现会员管理程序

    C++实现会员管理程序

    这篇文章主要为大家详细介绍了C++实现会员管理程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • Qt如何自定义滑动条

    Qt如何自定义滑动条

    这篇文章主要介绍了Qt如何自定义滑动条问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • c++中虚函数的实现详解

    c++中虚函数的实现详解

    众所周知探索c++对象内部的实现是一件非常有趣的事情,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?下面这篇文章就来给大家实际检验一下 Visual Studio 2013 编译器在无优化条件下,虚函数的实现。有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • C++日期类(Date)实现的示例代码

    C++日期类(Date)实现的示例代码

    这篇文章主要为大家详细介绍了如何利用C++语言实现日期类(Date),可以实现确定某年某月有多少天、打印日期等功能,感兴趣的可以了解一下
    2022-07-07
  • 浅谈C++类型转换几种情况

    浅谈C++类型转换几种情况

    本文主要介绍了几种C++类型转换,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • C语言pow()函数实现求x的y次方的值

    C语言pow()函数实现求x的y次方的值

    这篇文章主要介绍了C语言pow()函数实现求x的y次方的值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • c++网络编程下Linux的epoll技术和Windows下的IOCP模型

    c++网络编程下Linux的epoll技术和Windows下的IOCP模型

    c++ 网络编程LINUX-epoll/windows-IOCP下socket opoll函数用法 优于select方法的epoll 以及windows下IOCP 解决多进程服务端创建进程资源浪费问题,感兴趣的小伙伴一起来学习吧
    2021-08-08
  • C语言递归系列的深入总结

    C语言递归系列的深入总结

    这篇文章主要给大家总结介绍了关于C语言递归系列的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • C++简单又轻松建立链式二叉树流程

    C++简单又轻松建立链式二叉树流程

    二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址
    2022-06-06

最新评论