1、指针
(1) 指针定义:加前缀*。
(2)指针使用:
不加前缀表示指针本身,即物理地址;加前缀*表示解引用,即取物理地址指向的东东,根据指针类型是INT还是DOUBLE等来解引用,因为不同类型所占长度不同。
当要仅仅只对不同类型的指针变量所指向的物理地址进行比较时,除函数指针外使用void*类型,因为不需要知道变量长度,只需要比较物理地址。
(3)取地址操作:加前缀&,
2、引用
(1) 引用又叫别名,既然是别名,那么引用应等同于所指向的对象使用。定义形式如下
类型名 & 对象名
之所以称为别名是因为它初始化后,可以当作被初始化的对象来使用。
(2) 引用在定义时必须被初始化
int x=1;
int &y ;//错误没有初始化
int &y=x;//正确
int&z=&x;//错误,在这个定义中引用并没有指向指针类型的对象而是指向int类型的对象
(3) 引用一经定义,不会再指向其它对象
int x1=1;
int x2=2;
int &y=x1;
y=x2;//结果是x1=2,而不是y指向了x2,成为了x2的别名。
(4) 指针与引用
int x1=1;
int x2=2;
int &y=x1;//定义一个引用,成为x1的别名
int *z=&x1;//定义一个指针,该指针指向x1
int *w=0;
w=&x1;//定义一个指针,指向x1
(5) 关于const和引用的联合使用
①同一类型的值,但涉及运算
int x=1;
const int &y=x+10;//定义一个const引用y,其值为x+10 。
②不同类型的值和不可寻址的值:
double x=1;
const int &y=x;
形成了一个隐含的临时对象,但程序员不能访问它。
编译器转化其为:
double x=1;
int temp=x;
const int &y=temp;
幸亏定义的是const引用,如果这样写:
int &y=x;//则用户改变了y的值,实际上在改变临时对象的值。
③按本人理解,不知道对否????
在①中,如果改为:
int &y=x+10;
则编译时也会生成一个临时对象
int temp=x;
const int &y=temp+10;
④引用指向一个指针类型的对象
const int x=1;
int *&y=&x;
//错误,因为定义了一个引用,且该引用是一个指针的别名,即该引用指
//向指针类型的对象,但定义该指针指向的对象可以修改,而实际指向一个常量。
Const int *&y=&x;
//错误,虽指针指向的对象不能修改了,但y作为一个指针类型的别名,其本身(即指针或
//地址)可以修改。x为const对象,其值和在内存中的地址都不能修改,如果不使用引
//用,改为 cont int*y=&x;即为正确的,既然用了引用,y做为指向x的指针的别名,那么
//对y的修改就是对x的地址的操作,而x的地址不能改变。
Const int * const&y=&x;//正确,x的值和地址都不会改变。
相关推荐
c++指针方面的心得
c++指针方面的心得
C++指针(一些自我总结记录)
指针的本质是:存储地址的一个变量 1.常量指针 地址是不变的,可以通过指针修改内容的值,指向的是一个变量,不能指向常量(都可以通过指针修改内容的值了,还指向常量干嘛) 2.指向常量的指针 不能通过指针修改内容的值(不是内容不能改,只是不能通过指针来改),但可以给指针重新赋值,也就是说地址可变,可以把另一个变量的地址赋值给这个指针,可以指向常量也可以指向非常量。 3.指向常量的常量指针 首先地址不变,也不能通过指针修改内容的值,可以指向常量,也可以指向非常量 ...
activemq_CVE-2015-5254_漏洞复现_源码分析
ActiveMQ-CVE-2015-5254
C++指针总结
内存 计算机的内存由数以万计的位(bit)组成,通常由许多位合成一组作为一个单位。其中一个称为字节(byte),每个字节包含八个位。 1.内存中的每个位置由一个独一无二的地址标识。 2.内存中的每一个位置都包含了一个值。 变量(名字)与内存位置之间的关联并不是硬件提供的,它是由编译器为我们实现的,硬件任然通过地址访问内存位置。 指针 指针的初始化是用&操作符完成的。 间接访问操作符*:通过一个指针访问它所指向的地址过程称为间接访问。 当间接访问的时候他表示访问内存位置并查看那里的值。
Verilog-asm小练习—PLL建模
Verilog- ams是Verilog标准的模拟混合信号语言,以下是对PLL建模的一种思路参考
电网渗透之终端安全
电力系统安全不仅关系到电网的稳定运行,也关系到国家能源安全和国计民生,甚至关系到国家的安全和利益,电力系统由于结构复杂多样、分布广泛、重要性高,一旦系统瘫痪影响巨大,因此,极容易成为敌对势力攻击的首选目标。随着信息安全暴露面迅速增加,将给公司网络安全防线带来严峻挑战。 监控、保障这些电力系统安全运行变的尤为重要。内部安全防护产品有防火墙、纵向加密、反向隔离设备等...
c++学习心得(七)指针变量
首先,可以通过指针来保存一个地址,或者说指针就是一个地址 int a = 10; int *p; p = &a; &为取地址符,&a为获取a的地址,此时指针p指向a的地址,需要注意的是p指向的是a的地址,而*p是访问占有a的地址的变量,可以通过*p在访问变量a的同时修改变量a的值。 int a = 10; int *p; p = &a; *p = 1000; #include <iostream> #include <string> #i
安卓应用锁开发实战:如何通过拦截Activity启动实现密码验证(附完整代码)
本文深入探讨了在安卓系统中开发应用锁功能的两种实战方案:通过修改ActivityStarter源码或实现IActivityController接口来拦截Activity启动流程,从而实现启动前的密码验证。文章详细对比了两种方案的技术选型、实现细节与适用场景,并提供了处理隐式Intent、验证状态管理等核心问题的完整代码,为开发系统级安全功能提供了实用指南。
C++ 对引用的理解
引用可以看做是数据的一个别名,通过这个别名和原来的名字都能够找到这份数据 引用必须在定义的同时初始化,并且以后也要从一而终,不能再引用其它数据,这有点类似于常量(const 变量)。 引用变量 里面 实际存储的 内容实际上 是 所引用数据的地址, 但是直接使用的引用变量的话, 却使用的是所指代的数据. 比如以下代码: int a = 10; int &r = a; cout <&...
YOLOv8中的可变形卷积改进 | 从DCNv1到DCNv3的多位置替换可变形卷积保姆级实操
可变形卷积(Deformable Convolution)最早由Dai等人在2017年提出,其核心思想是在标准卷积操作的基础上,引入可学习的偏移量(offsets),使卷积核能够自适应调整其采样位置,从而增强模型对目标变形的感知能力。return x本文通过深入探讨可变形卷积在YOLOv8中的应用,详细介绍了DCNv1、DCNv2和DCNv3的原理和实现,并通过实验验证了其在目标检测任务中的有效性。未来,我们将继续探索更多优化策略和技术,提升YOLOv8模型的性能,以应对更复杂的目标检测任务。
uniapp [全端兼容] - 详细实现人脸识别和活体检测功能,实时监测人脸是否进入区域及动作是否正确播报,免费自动提示引导动作及语音,提供提供实名认证、身份证识别、人脸信息采集、刷脸扫脸认证示例代码
uniapp,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,人脸识别,扫脸认证,人脸认证,活体认证,身份认证,uni-app人脸识别详细教程,如何在app端实现免费人脸识别教程,如何在小程序端做,最好用的插件,安卓ios百度人脸识别、活体检测、人脸采集APP,H5人脸识别带前后摄像头,适合新手看的人脸识别功能教程,详细示例代码源码,有没有免费的,接入百度,阿里云人脸识别,百度,api,活体检测,数据采集,动作提示指引,语音提示指引,报错,无法核验一直出错,根本用
C++面向对象程序设计学习心得
C++面向对象程序设计学习心得 经过几周c++面向对象程序设计的学习,对面向对象程序设计有了一些了解。 递归 简单地讲,递归就是程序直接或间接调用本身的编程技巧,通过把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的小问题,直到最小的问题可以直接解决。 递归算法的解题步骤: 1)分析问题、寻找递归:找出大规模问题与小规模问题的关系,这样通过递归使问题的规模逐渐变小...
3大绝招!MySQL如何轻松搞定文本、图像和视频的多模态数据分析?
首先,让我们来了解一下“多模态”到底是什么意思。简单来说,多模态指的是能够同时处理不同类型数据(如文本、图像、音频等)的能力。传统的数据库往往只能专注于一种或几种特定类型的数据,比如关系型数据库主要处理结构化数据,而文档型数据库则更适合非结构化数据。但是现在,随着技术的进步,像MySQL这样的数据库也开始支持更加复杂的数据模型,允许我们在同一个系统内处理多种格式的数据。通过上述五个部分的详细介绍,相信你现在应该对如何利用MySQL进行多模态数据分析有了更清晰的认识。
C++Primer笔记
最近打算看STL源码剖析,但是自感C++语法不精,还是从C++Primer补起,两年前看过的书,现在再看,又是另一番感觉了。类型 指定类型: 前缀 类型 u (unicode16)char16_t U (unicode32)char32_t L wchar_t u8 (utf8)char 后缀 类型 u/U unsigned l/LL long
LearningToRank(LTR)排序算法LGBMRanker的原理和使用
1. 写在前面 在最近新闻推荐的比赛中, 接触到了一个排序模型LGBMRanker, 该模型与普通的分类模型LGBMClassifier不太一样, 普通的分类模型在进行推荐的时候, 往往是先预测某个商品或者文章用户会不会点击, 也就是它的目标是预测用户点击某篇文章或者某个商品的概率, 然后根据这个概率值进行排序, 排完之后,把最靠前的几个返回回来给用户进行推荐。 而LGBRanker模型, 它不关心用户点击某篇文章的概率, 而是根据用户点击或者不点击的这个行为, 直接去预测最后商品或者文章的一个相对顺序,
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
c++c++ 学习笔记(基础+封装)
c++ 学习记录之基础加封装 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 c++ 学习记录之基础加封装 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 一、c++标准输入输出流 引用 语法: 类型 & 引用名 = 目标变量名 指针的引用: c++ 函数-支持函数重载与缺省参数 内联函数: 动态内存管理 类和对象: 什么是类...
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
困扰我的c++语法
以下是我上周学习c++ primer的心得: 1 数组引用作为形参 c++允许将变量定义成数组的引用,以下列代码为例。形参为int (&arr)[10],该参数需分成两部分说明,引用名和 引用定义。 引用名arr和&结合,表示其是一个引用 和下标运算符结合,表示其是一个数组的引用 和int结合,表示其是一个int型数组的引用 值得注意的是,括号是必不可少的,否则形参就会变成一个整...
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
学习周记2:2019.2.25-2019.3.3
前言 这学期几乎全是硬核的算法/程序课,为了督促自己认真学习,我将每周写一篇周记。周记模板前一周保留,当周每日更新当日笔记。如有整段文字代码适合另起blog,也将链接标在周记对应的日期下。 课程:算法设计与分析、数字图像处理、游戏AI中的算法、视觉计算与深度学习、人工智能引论及实践课(NLP)、Python程序设计与数据挖掘导论、计算机图形学。 网课:程序设计实习、吴恩达机器学习、...
九月C++学习心得
最开始接触类的封装时,总搞不懂成员变量和成员函数的关系,直到对着课本例题反复拆解,在编译器里逐行调试报错,才突然明白“封装”其实是给数据和操作加了层“保护壳”,就像给手机装保护套,既安全又规整。指针和引用曾是最大的拦路虎,一次作业里因混淆两者导致程序崩溃,花两小时排查后才摸清:指针是“地址标签”,引用是“变量别名”,用法差之毫厘,结果谬以千里。刚开学的这一个月,C++学习像一场从“陌生”到“熟悉”的探索。从最初对着类和对象的概念一头雾水,到现在能独立写出简单的面向对象程序,每一步都藏着突破的欣喜。
【C++学习心得】智能指针
C++智能指针,作为面试时的高频知识点,掌握它是非常有必要的作为一名面临就业的应届生,将我学习C++智能指针的心路历程分享给大家,希望能给有需要的朋友提供一点小小的帮助!
C++学习心得:引用的详解
一、引用 引用的本质是一个指针常量 二、指针 三、转载 1、引用在创建时必须初始化,引用到一个有效对象;而指针在定义时不必初始化,可以在定义后的任何地方重新赋值。 2、指针可以是NULL,引用不行 3、引用貌似一个对象的小名,一旦初始化指向一个对象,就不能将其他对象重新赋值给该引用,这样引用和原对象的值都会被更改。 4、引用的创建和销毁不会调用类的拷贝构造函数和析构函数。 作者:撒哈拉的水草 链接:https://www.zhihu.com/question/37608201/answer/8
c++指针学习心得
普通变量(如int a=10)存的是 “值”,而指针变量(如int* p)存的是 “另一个变量的内存地址”。可以类比:把变量当成 “房子”,值是 “房子里的东西”,地址是 “门牌号”,指针就是专门记 “门牌号” 的小本子。赋值时p=&a是给指针存地址,*p=20是给指向的变量赋值,别写反。解决:指针类型要和指向的变量类型严格一致,除非用 “void*”(万能指针,初学者暂时不用深究)。解决:遍历数组时,严格控制指针移动的范围(比如用循环变量 i 限制次数),别让指针 “跑出去”。错误代码:int* p;
C++八股学习心得.3
数组是一个连续空间下的固定大小相同类型元素的集合,数组名指向第一个元素的指针,不可向函数传入一个完整数组,注意多维数组形式,c++字符串c语言和c++string串指针是一个变量,这个值是某个变量的地址,内存位置直接地址,使用之前需要进行声明,无论什么类型代表内存地址的十六位进制数,指针指向变量类型不同指针类型不同,首先定义一个指针变量,地址赋给指针,访问指针变量可用地址的值,*取地址的变量值指针没有赋值可以使用NULL赋值。
搬砖:C++ 指针常量、常量指针和常指针常量
C++ 指针常量、常量指针和常指针常量 2014年11月26日 22:12:41 To-Big_Fish 阅读数:4324 https://blog.youkuaiyun.com/yujin753/article/details/41523005 1、指针常量 如果在定义指针变量时候,指针变量前用const修饰,被定义的指针变量就变成了一个指针类型的常变量,指针类型的常变量简称为指针常量。 格式如下...
c++ 指针_c及c++指针及引用简单解释(自学学习心得)
从实参向形参传递参数时有两种方式可以使用:1. 指针使用指针传递时,如果目的是对实参的参数进行相关修改,则需要将实参变量的地址传递给形参,也就是说,形参需要定义为可以存放实参变量地址的变量,举个例子://此处定义函数,函数参数为整型指针变量,用来接收实参变量地址; void f(int*q,int*p) { //在这里对*q,*p进行修改,就是对实参的整型变量内容进行修改; } int main(...
597



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



