C++中的指针

2023-05-16


以下为本人大一时阅读《C++ Primer Plus》关于指针的章节所做的笔记
 

指针

一个函数只能返回一个值,但是如果使用指针来传递变量,则可以修改更多的值,可以达到返回不止一个值的效果

用指针作为参数的写法:

void f ( int * nptr){
     *nptr = *nptr * *nptr; //计算平方
}

传递参数时候:

int a;
f ( &a );

sizeof函数的使用:

size_t getsize(int *n){
	return sizeof(n);
}
int main()
{
	int a[20];
	cout<<sizeof(int)<<endl;
	cout<<sizeof a<<endl;
	cout<<sizeof(a)<<endl;
	cout<<getsize(a)<<endl;
	return 0;
}

输出:

4
80
80
8

​注意:
getsize函数返回的是指针变量所占的大小
对于一个数组a[10],sizeof(a)与sizeof a返回的值相同
但对于普通变量,如int a,使用sizeof函数需写成:

sizeof a;

对于变量类型,写成:

sizeof (int);

指针运算:
指针的运算一般无意义,不过可以用来处理数组
如:

int a[20];
int *p=&a[0];
p+=2;

在这个过程中,p存储的地址的值加上2*4=8
又如:

int a[20];
int *p1=&a[0];
int *p2=&a[2];

则p1-p2=2

 
指针与数组:

int b[10];
int *bptr=b;

则有b[0]=(b)、b[2]=(b+2)
二维数组:
对于a[3][5]
*(*a+1)=a[0][1]
*(*(a+1)+1)=a[1][1]

 

new和delete

Free store:
有时候也称为heap
分配给每个程序用于存储在执行时创建的对象的内存区域

new操作:
申请内存(allocates (i.e., reserves) storage of the proper size for an object at execution time)
调用构造函数来初始化对象(calls a constructor to initialize the object)
返回指定到new右边的类型的指针(returns a pointer of the type specified to the right of new )

delete操作:
删除对象(destroys a dynamically allocated object)
调用对象的析构函数(calls the destructor for the object)
释放内存(deallocate memory from the free store)

用法演示:

int *p1=new int;
char *p2=new char;
int *p3=new int[4];//数组
delete p1;
delete p2;
delete []p3; //删除数组

初始化由new分配的对象

double *ptr = new double( 3.14159 );
cout<<*ptr;

注意:
int *p=new int[10];
申请了一个含有与10个元素的int型数组
这时是同时申请了10个int的内存空间
可以使用p[i]来表示这个数组中的某个元素
delete []p;
是同时将这个数组的所有元素删除

delete p;
只有将这个数组的第一个元素删除

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中的指针 的相关文章

  • 对md5sum程序的修改

    linux下自带md5sum工具 xff0c 可以对文件计算md5值 xff0c 但这个命令行工具不能直接对字符串求md5 xff0c 而对一个字符串求md5是一个比较有用的需求 xff0c 比如计算签名 于是对源码md5sum c修改了一
  • 物联网通信协议——比较-MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP

    原文链接 xff1a https blog csdn net lightrain0 article details 84343857 AMQP amp MQTT amp DDS https www youtube com watch v 6
  • 门电路逻辑符号大全(三态门,同或门,异或门,或非门,与或非门, 传输门,全加器,半加器等)

    最近要研究一下滤波器设计的无乘法器的实现 xff0c 所以要学习一下加法器的电路 xff0c 丢了一段时间 xff0c 忘的差不多了 xff0c 这里罗列一下常用的门电路的符号 这是一个1位全加器的数字电路组成 xff1a 以下两幅图可以复
  • 实函数傅里叶变换的奇偶虚实特性

    本文内容来源于他人的PPT xff0c 经本人整理而成 xff0c 算是对数字信号处理的复习吧 而实偶函数的傅里叶变换仍然是一个实偶函数的性质正是DCT的基础 xfeff xfeff
  • 多面体及欧拉公式及广义欧拉公式

    像正方体 xff0c 四棱锥这样的平面多面体属于简单多面体 xff0c 它们可以与球拓扑同构 xff0c 即可以连续拓扑变换成一个球 它们满足欧拉公式 xff1a v e 43 f 61 2 其中v是顶点 xff08 vertex xff0
  • mysql在表的某一位置增加一列的命令

    如果想在一个已经建好的表中添加一列 xff0c 可以用诸如 xff1a alter table t1 add column addr varchar 20 not null 这条语句会向已有的表t1中加入一列addr xff0c 这一列在表
  • tar命令中的-C作用

    tar xzvf abc tar gz C tmp 上面的命令将abc tar gz这个压缩包解压到当前目录下的tmp目录下 xff0c 而不是当前目录下 xff0c 这就是 C选项的作用
  • Java多线程

    一 基础概念 1 CPU核心数和线程数 多核心指的是单芯片多处理器 xff0c 将多个CPU集成到同一个芯片内 xff0c 不同的CPU可以单独的运行程序 目前主流的CPU有四核 六核 八核 增加核心数目的是为了增加线程数 xff0c 一般
  • ros(23):接收rviz中的2D Nav Goal、2D Pose Estimate消息

    1 rviz 教程 1 1 2D Nav Goal 2D Nav Goal Keyboard shortcut g This tool lets you set a goal sent on the 34 goal 34 ROS topic
  • RealSense SR300 坑4米 获取相机参数

    硬件 相机的原理我了解的也不甚多 xff0c 看到一篇讲的很好的文章 xff0c 就在这里引用了 SR300设备的红外线发射器 xff08 IR Laser Projector xff09 发射的 结构光 xff0c 经物体反射后会被红外线
  • 算法的分类

    算法有多种分类方式 xff0c 可以根据实现方式分类 xff0c 也可以根据设计方法分类 xff0c 还可以根据应用领域进行分类 不同的分类方式有不同的特点 按照实现方式分类 xff0c 可以将算法分为递归算法 迭代算法 逻辑算法 串行算法
  • Eclipse搭建stm32+jlink开发环境全攻略(进阶篇二)

    Eclipse搭建stm32 43 jlink开发环境全攻略 进阶篇 二 我们设计程序往往会遇到这样的一个需求 xff0c 那就是我们的程序起始位置需要重新定位 xff0c 并不是默认的0x08000000 xff0c 这种情况往往出现在有
  • 不要在小公司做底层软件开发

    在这里makekam对底层软件的理解就是指驱动开发 xff0c 代码移植等工作 其中也包括底层的算法 在小公司做软件不要做底层软件开发 xff0c 犹如在公司做硬件开发不要只是焊接电路板 小公司处于产业链的最末端 xff0c 没有自己的核心
  • 多旋翼飞控篇新手课堂教程(共九集)

    多旋翼飞控篇新手课堂第一课 xff0c 将你的NAZA M真正升级成NAZA V2 http www mxkong com thread 134 1 1 html 出处 模型控MxKong 多旋翼飞控篇新手课堂第二课 xff1a NAZA远
  • Java基础final详解

    final中文意思 最后的 最终的 final 可以修饰类 属性 方法和局部变量 1 当不希望类被继承时 可以用final修饰 final class A 不可被继承 2 当不希望父类的某个方法被子类覆盖 重写 override 时 可以用
  • socket编程总结

    socket编程总结 主机字节序和网络字节序 字节序分为大端字节序 xff08 big endian xff09 和小端字节序 xff08 little endian xff09 大端字节序 xff1a 一个整数的高位存在内存的底地址 xf
  • c++中的常见问题

    CSP J终于考完了啊 xff01 坐在考场 xff0c 是一种煎熬 xff1a 为什么那么多不会啊 xff01 xff01 xff01 这里 xff0c 总结一下在c 43 43 中的那些常见问题 xff08 作者亲身经历 xff09 x
  • 大陆毫米波雷达ARS408-21xx(内附毫米波雷达使用说明书)使用记录:第一期

    文章目录 前言一 硬件链接二 代码如何使用三 大陆毫米波雷达ARS408 21XX解析代码说明总结 前言 从我个人的学习成长历程来看 xff0c 从0到1确实很难 我个人在对这款毫米波雷达的学习的过程中也比较痛苦 xff0c 资料缺乏 xf
  • 2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~

    前言 昨晚逛了逛GitHub xff0c 无意中看到一位P8大佬的算法刷题笔记 xff0c 感觉发现了宝藏 xff01 有些小伙伴可能已经发现了 xff0c 但咱这里还是忍不住安利一波 xff0c 怕有些小伙伴没有看到 关于算法刷题的困惑和

随机推荐

  • LIO-SAM学习与运行测试数据集

    文章目录 0 说明0 1 环境配置说明0 2 LIO SAM0 3 系统架构0 4 LIO SAM youtube视频演示 xff1a Rotation Dataset Walking Dataset Park Dataset Campus
  • 理解ROS:参数服务器和动态参数

    文章目录 1 程序中的getparam与param1 1 getparam xff08 无默认值 xff09 1 2 param xff08 有默认值 xff09 1 3 删除参数1 4 程序中设置参数1 5 检查参数1 6 搜索参数 2
  • ROS理解:ros中的坐标以及对tf2进行解读

    文章目录 1 ROS中的坐标2 tf到tf2的变化3 发布静态tf24 发布动态tf25 监听tf26 增加自己的frame 官网就是最好的教程 xff0c 如果阅读英文没什么压力 xff0c 强烈推荐以下链接进行全面了解 xff1a 官网
  • gtsam:从入门到使用

    文章目录 一 总览二 贝叶斯网络和因子图三 机器人运动建模3 1 使用因子图建模3 2 建立因子图3 3 因子图与变量3 4 GTSAM中的非线性优化3 5 全后验推论 四 机器人定位4 1 一元测量因子4 2 自定义因子4 3 使用自定义
  • 马尔可夫链、隐马尔科夫模型、贝叶斯网络、因子图

    文章目录 一 马尔可夫链以及隐马尔可夫模型1 1 概念1 2 举例说明隐马尔可夫模型 二 贝叶斯网络三 因子图 贝叶斯网络是很多概率模型的基础 xff0c 对于slam研究也是一项必须掌握的数学理论工具 一 马尔可夫链以及隐马尔可夫模型 1
  • 3D打印机DIY之一------Prusa i3的材料清单和总体结构组装

    自己使用铝件和亚克力板组装了一台Prusa i3 3D打印机 xff0c 现在把详细的过程记录下来 总体效果图 xff1a 一 材料清单 元件数量总价2020欧式铝方管 xff1a 4根400mm 3根340mm 1根150mm 1根130
  • 位置式PID与增量式PID的介绍和代码实现

    PID分为位置式PID与增量式PID 一 位置式PID 1 表达式为 xff1a 2 缺点 xff1a 1 xff09 由于全量输出 xff0c 所以每次输出均与过去状态有关 xff0c 计算时要对ek进行累加 xff0c 工作量大 xff
  • 常见蓝牙模块介绍和AT指令

    目录 一 HC 05主从一体蓝牙模块 二 HC 06从机蓝牙模块 三 低功耗BLE蓝牙4 0模块 cc2540或cc2541 四 JDY 10 蓝牙4 0 BLE模块 五 蓝牙模块LAYOUT注意事项 xff1a 常见的蓝牙模块为 xff1
  • PID参数调节总结

    原文链接 xff1a 点击打开链接 经验 xff1a 1 采样频率低 xff08 如500ms xff09 xff0c Kp一般是0 01级别 xff1b 采样频率高 xff08 如1ms xff09 xff0c Kp一般是1级别 2 先只
  • 为Keil添加注释的快捷键

    Keil刚装上是没有注释快捷键的 xff0c 可以自己添加 xff0c Edit Configuration xff0c 然后选择 Shortcut Keys 标签页 xff0c 下拉找到 Comment Selection xff0c 然
  • C语言__attribute__的使用

    一 介绍 GNU C 的一大特色就是 attribute 机制 attribute 可以设置函数属性 xff08 Function Attribute xff09 变量属性 xff08 Variable Attribute xff09 和类
  • ros(30):while(ros::ok()){}理解与使用示例

    while ros ok 理解 while ros ok 是ros的一种循环模式 xff0c 和ros Rate loop rate ros spinOnce 等结合可以控制程序的执行顺序 ros Rate loop rate 10 设置循
  • Jetson TX2更换软件源

    TX2的软件源为国外服务器 xff0c 网速会很慢 xff0c 需要换国内的ARM源 备份 etc lib路径下的source list文件 xff0c 然后在终端 xff08 按ctrl 43 alt 43 T打开 xff09 执行以下命
  • 使用Dockerfile创建镜像

    Dockerfile是一个文本格式的配置文件 xff0c 可以使用Dockerfile来快速创建自定义的镜像 一 基本结构 Dockerfile由一行行命令语句组成 xff0c 并且支持以 开头的注释行 一般而言 xff0c Dockerf
  • 高质量嵌入式Linux C编程 第二章 数据 学习笔记

    一 什么是数据类型 xff1f 数据类型包含两方面的内容 xff0c 数据的表示和对数据加工的操作 数据的全部可能表示构成数据类型的值的集合 xff0c 数据全部合理的操作构成数据类型的操作集合 二 什么是变量 xff1f 其值在作用域内可
  • 高质量嵌入式Linux C编程 第三章 运算符、表达式学习

    一 运算符有哪几类 xff1f xff08 1 xff09 算数运算符 xff1a 43 43 43 七种 xff08 2 xff09 关系运算符 xff1a gt lt 61 61 gt 61 lt 61 xff01 61 六种 xff0
  • 设计一种可全向移动的球形机器人

    一 前言 之前在网上看到一种球形机器人 xff0c 觉得很有趣 xff0c 而且原理也比较简单 xff0c 大概就是把一辆小车放在一个透明的亚克力球中 xff0c 控制小车使球体滚动 xff0c 姿态控制算法与平衡小车类似 xff0c 然后
  • ROS-Python

    用python来编写ros话题 服务方面常用的几个点 xff1a 话题topic 1 初始化节点 rospy init node 34 节点名字 34 举例 xff1a rospy init node 34 test 34 anonymou
  • 关于SBUS信号在单片机中的一些个人理解

    最近一直在弄关于SBUS的编码与解码这方面的内容 xff0c 虽然网上资料很多 xff0c 但是网上资料太杂 xff0c 我找的一些资料可能是我理解的问题 xff0c 所以我摒弃了一些骚操作 xff0c 对于一些单片机学得不精的人来说 xf
  • C++中的指针

    以下为本人大一时阅读 C 43 43 Primer Plus 关于指针的章节所做的笔记 指针 一个函数只能返回一个值 xff0c 但是如果使用指针来传递变量 xff0c 则可以修改更多的值 xff0c 可以达到返回不止一个值的效果 用指针作