首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Boost C++ 库 | 智能指针(RAII、作用指针作用数组)

02、作用指针>>>std::scoped_ptr 是 C++17 之前的一种智能指针,用于在栈上管理动态分配的对象的生命周期。它的特点是:拥有唯一性和局部性的资源管理。...在现代 C++ 中,std::scoped_ptr 也被弃用了,取而代之的是 std::unique_ptr。一个作用指针独占一个动态分配的对象。...不像 std::auto_ptr,一个作用指针不能传递它所包含的对象的所有权到另一个作用指针。一旦用一个地址来初始化,这个动态分配的对象将在析构阶段释放。...因为一个作用指针只是简单保存和独占一个内存地址,所以 boost::scoped_ptr 的实现就要比 std::auto_ptr 简单。...避免复杂的资源管理:使用 scoped_ptr 可以简化内存管理,因为不需要手动释放内存,从而降低了内存管理错误的风险03、作用数组>>>作用数组的使用方式与作用指针相似。

10710

C语言】const修饰指针的不同作用

const修饰变量 变量是可以修改的,如果把变量的地址交给⼀个指针变量,通过指针变量的也可以修改这个变量。...请看下一个章节进行讲述用const修饰指针变量来进行实现该问题。 const修饰指针变量 下面通过四个例子对比来得到关于const修饰指针变量的不同方式所得到的不同结论。...} 运行: 运行发现两处均出现报错,现在的指针指向不能改变,指针指向的变量通过指针也不能改变。...结论 • const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。但是指针变量本⾝的内容可变。...• const如果放在*的右边,修饰的是指针变量本⾝,保证了指针变量的内容(指针指向)不能修改,但是指针指向的内容,可以通过指针改变

8810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言作用 和 生命周期

    直接用最简单最通俗的话语给大家讲解下:变量的作用在哪里使用,哪里就是变量的作用。配合相关知识点去打代码的话你的理解也会越深的。 局部变量的作用是在变量所在的局部范围内。...代码 示例代码如下所示 #define _CRT_SECURE_NO_WARNINGS 1 #include // 1.作用:变量的作用在哪里使用,哪里就是变量的作用...局部变量的生命周期是进入作用周期开始,出作用生命周期结束。 全局变量的生命周期是整个程序的生命周期。...() { int i = 2; //进入函数{}作用周期开始,出函数{}作用生命周期结束。...【C语言】extern 关键字_int addtwonum()_謓泽的博客-CSDN博客⒈描述⇢extern 变量称之为外部存储变量。

    13410

    Golang语言--变量作用

    作用为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。...Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函数定义中的变量称为形式参数 接下来让我们具体了解局部变量、全局变量和形式参数。...---- 局部变量 在函数体内声明的变量称之为局部变量,它们的作用只在函数体内,参数和返回值变量也是局部变量。 以下实例中 main() 函数使用了局部变量 a, b, c: ?...Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑。实例如下: ? 形式参数 形式参数会作为函数的局部变量来使用。实例如下: ? 以上实例执行输出结果为: ?

    1.3K60

    Go 语言变量作用

    作用为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。...Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函数定义中的变量称为形式参数 接下来让我们具体了解局部变量、全局变量和形式参数。...---- 局部变量 在函数体内声明的变量称之为局部变量,它们的作用只在函数体内,参数和返回值变量也是局部变量。...以下实例中 main() 函数使用了局部变量 a, b, c: package mainimport "fmt"func main() { /* 声明局部变量 */ var a, b, c...fmt.Printf("结果: a = %d, b = %d and g = %d\n", a, b, g)} 以上实例执行输出结果为: 结果: a = 10, b = 20 and g = 30 Go 语言程序中全局变量与局部变量名称可以相同

    834140

    【重拾C语言】九、再论函数(指针、数组、结构体作参数;函数值返回指针、结构体;作用

    本文将再论函数,主要介绍指针、数组、结构体等作参数;函数值返回指针、结构体,以及C语言作用相关知识。...在函数内部,通过解引用指针并修改指针所指向的值,实现了对实参的修改。 9.1.3 数组作参数 在C语言中,数组名实际上是一个指针,表示数组首元素的地址。...在C语言中,有两种途径能够把该结构体值通过函数名字带回到主调函数。 a....在C语言中,每个源程序编译单位(例如源文件),每个函数定义、函数原型以及复合语句都构成一个作用区域。在一个标识符的作用内,可以使用该标识符,并且使用的是相应声明的标识符。...函数作用 在函数内部定义的标识符具有函数作用,它们只在函数内部可见,在函数外部无法使用这些标识符。 c.

    12010

    C语言指针(野指针)

    2:如何规避野指针 1.1:指针变量的初始化 2.2:指针越界访问 3.3:指针指向的空间如果我们还回去的话,就把指针指针置为NULL  4.4:指针使用之前检查有效性 1:什么是野指针?...指针越界也会导致野指针问题,这里解释下:就是当你指针指向的范围超过数组名范围时,那么那个指针就是野指针了。...2:如何规避野指针 1.1:指针变量的初始化 int a = 10; int* pa = &a; //指针变量的初始化 指针常见错误 引用未初始化的指针变量 试图引用未初始化的指针变量是初学者最容易犯的错误...3.3:指针指向的空间如果我们还回去的话,就把指针指针置为NULL NULL——空指针,用来初始化指针或者给指针赋值,可以转到定义看看 #define NULL    ((void *)0) 说的简单一点就是...空指针不应与未初始化的指针混淆:保证空指针与指向有效对象的任何指针进行比较。但是,根据语言和实现,未初始化的指针可能没有任何此类保证。它可能与其他有效指针相等; 或者它可能比较等于空指针

    2.6K20

    C语言变量的作用和类别-学习二十

    变量的作用 在程序中能对变量进行存取操作的范围称为变量的作用。 根据变量的作用不同,变量分为局部变量和全局变量。 局部变量 在一个函数体内或复合语句内定义变量称为局部变量。...a : b; // 形参a、b作用范围只在max函数里 return (c); } image.png 变量的存储类别 1.动态存储方式与静态存储方式 从变量的作用(即从空间)角度来分,可以分为全局变量和局部变量...为提高执行效率,C语言允许将局部变量的值放在CPU中的寄存器中,需要用时直接从寄存器取出参加运算,不必再到内存中去存取。 由于对寄存器的存取速度远高于对内存的存取速度,因此这样做可以提高执行效率。...在此作用内,全局变量可以为程序中各个函数所引用。编译时将外部变量分配在静态存储区。 用extern来声明外部变量,以扩展外部变量的作用。...4.关于作用和生存期的概念 作用:如果一个变量在某个文件或函数范围内是有效的,就称该范围为该变量的作用。 生存期:如果一个变量值在某一时刻是存在的,则认为这一时刻属于该变量的生存期。

    96910

    C - 指针C语言指针的总结

    C语言指针的总结 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一个字节都有一个内存地址,这个地址是一个十六进制的数。...什么是指针:变量的地址叫做指针指针就是地址,地址就是指针。 下面通过一张图可以更直观的理解内存中的地址 ? 内存中的地址演示图 2. 指针 指针C语言的灵魂。指针变量占据8个字节。...p操作的是p这个指针变量,可以取p得值,也可以为p赋值 指针变量的使用 可以使用指针间接的操作指针指向的变量。 *p 代表 p 指针指向的变量。...指针为什么要分类型? 多级指针 一个指针变量中存储的是一个一级指针的地址,那么它就是二级指针,一个指针变量中存储的是一个二级指针的地址,那么它就是三级指针。...二级指针:数据类型 ** 指针名 二级指针只能存储一级指针变量的地址。 多级指针在开发中很少用到,遇到多级指针耐心分析一定可以理清其中的关系。

    4.2K81

    C语言: 指针

    目录 概念: 指针的类型 指针的解引用 野指针指针的成因 空指针 指针与数组 指针在数组中的使用: 二级指针 ---- 概念: 在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址...指针的类型与指向的目标的类型一致,指针指向的是目标的地址。...野指针 概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)指针变量 在定义时如果未初始化,其值是随机的,指针变量的值是别的变量的地址,意味着指针指向了一 个地址是不确定的变量...1、指针初始化  2、小心越界访问 3、指针指向的空间释放 4、使用之前检查有效性 空指针 即是将指针置空 int* p = NULL; 指针与数组 #include <stdio.h...0; } 指针指向的是目标变量的地址,那么二级指针指向的就是指针的地址。

    2K70

    C语言指针

    学习 C 语言指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的。...指针变量就是一种变量, 和其他种类的变量类似, 但指针和其他变量又有区别. 首先C语言作为一种类型语言, 每个变量都会有几个属性. 变量名称. 变量类型. 变量的值....Address stored in ip variable: bffd8b3c Value of *ip variable:20 类型 对于C语言来说, 搞清楚变量的类型相当重要, 涉及到指针的时候就更加重要...前缀操作符, *表示"指向...的指针" 如果const, volatile后面为类型(int, long等), 那么作用于类型, 其他情况下作用于const, volatile左边的指针*. char...整个来说: next是一个指针, 指向一个函数, 函数的返回值也是一个指针, 指向一个类型为char的常量指针. C语言为类型语言, 即每个变量都有类型.

    2.7K20

    C语言——指针

    指针c语言中的一个重要概念,也是C语言的一个重要的特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,可以说,不掌握指针就是没有掌握C的精华也可以说...指针C语言的灵魂(doge) 由于通过地址能找到所需的变量单元,可以说,地址指向变量单元,打个比方,一个房间的门口挂了一个房间号2008,这个2008就是房间的地址,或者说,2008"指向"...程序第五第六行的作用就是使p1指向a,使p2指向b,此时p1的值为&a(即a的地址),p2的值为&b(即为b的地址) *注意:定义指针变量时,左侧应有类型名,否则就不是定义指针变量....下面来看一段代码: 这里我们可以发现p跟p+1相差1 这里c是多少呢 ?...16进制的C的10进制是12,所以q+1和q相差4  p是整型指针相当于sizeof(int)=4 q是字符型指针相当于sizeof(char)=1; 以上就是我归纳指针的一些小结 如果能帮助友友们 -

    2.3K20

    C语言指针

    指针的理解 1. 指针是一个值为内存地址的变量。 2. 指针本质上是地址,是计算机存放数据的空间。 3. 在通常情况下,我们把等号左边的指针理解成正常指针,把等号右边的指针理解成地址。...指向一级指针指针就是二级指针。 2. 二级指针里面存放的是一级指针的地址。...未初始化的指针就是野指针,野指针可以指向任何地方,可能会造成非法访问内存地址。 2. 野指针不会直接引发错误,操作野指针指向的内存区域才会出问题。 3. 尽量避免野指针的形成。...NULL 是C语言中定义的⼀个标识符常量,值是0,地址也是0,这个地址是无法使用的,读写该地址会报错。所以在解引用之前,必须确保它不是一个NULL指针。 4. ...如果已经确认程序没有问题,就不需要再做断言,可以在 #include 语句的前面,定义⼀个宏 NDEBUG ,那么assert()将不会发挥作用

    2700

    C语言指针

    二、指针的定义 三、指针的初始化 四、指针运算符 五、指针的用途举例 六、关于指针的疑问 指针C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。...1.我们已经知道,"直接引用"是直接通过变量名来读写变量 2.C语言中还有一种"间接引用"的方式(以变量a为例):首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a...* 看下面的代码,利用指针p读取变量c的值 1 int i = 2; 2 char c = 1; 3 4 // 定义一个指向char类型的指针 5 char *p = &c; 6 7 // 取出 8...* 如果我改一下第5行的代码,用一个本应该指向int类型变量的指针p,指向char类型的变量c int *p = &c; 我们再来看一下输出: ? ,c的原值是1,现在取出来却是513,怎么回事呢?...这个要根据内存来分析 根据变量的定义顺序,这些变量在内存中大致如下图排布: 其中,指针变量p和int类型变量i各占2个字节,char类型的c占一个字节,p指向c,因此p值就是c的地址 ?

    3.3K60

    C语言_初识C语言指针

    为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址 编号 = 地址 = 指针 指针变量 = 变量 = 存放地址的变量 ---- 一、指针 … 一个内存单元多大比较合适.../0 32位机器,上面有32根地址线 2的32次方个字节的空间 - - - 4,294,967,296 Byte — 4GB ---- 通过pa里存放的a的地址找到a ---- 三、指针变量的大小...指针变量是用来存放地址的 32位机器上:地址是32个二进制位,这个地址要存储的话要4个字节,所以在32位机器上,指针变量的大小是4个字节。...64位机器上:地址是64个二进制位,这个地址要存储的话要8个字节,所以在64位机器上,指针变量的大小是8个字节。

    19030

    作用 【Go语言圣经笔记】

    作用 一个声明语句将程序中的实体和一个名字关联,比如一个函数或一个变量。声明语句的作用是指源代码中可以有效使用这个名字的范围。...不要将作用和生命周期混为一谈: 声明语句的作用对应的是一个源代码的文本区域,它是一个编译时的属性; 一个变量的生命周期是指程序运行时变量存在的有效时间段,在该时间段内它可以被程序的其他部分引用,是一个运行时的概念...声明语句对应的词法域决定了作用范围的大小。对于内置的类型、函数和常量,比如int、len和true等是在全局作用的,因此可以在整个程序中直接使用。...还有许多声明语句,比如tempconv.CToF函数中的变量c,则是局部作用的,它只能在函数内部(甚至只能是局部的某些部分)访问。...,Go语言的习惯是在if中处理错误然后直接返回,这样可以确保正常执行的语句不需要代码缩进。

    39210

    Go 语言基础--函数&作用

    值传递:调用函数时将实际的参数copy一份到函数中 引用传递:调用函数时将实际参数的地址传递到函数中 指针传递:将实际变量的指针传递到函数中 值传递&引用传递这些都是各种语言中经常讨论的一个话题,...比如说Java 中就是完全按值传递,基础类型时copy一份传递到函数中,在函数内部对这个值进行更新毫无作用,传递一个对象的时候copy一份引用的值传递到函数内部,这也就是为什么 对这个引用值进行操作毫无作用...Student{} // 更新无效 strs[1] = "0" // 更新有效 strs = []string{} // 更新无效 } 但是go 相对于Java 非常灵活的是go增加了指针...,我们就可以方便使用的指针进行操作了 type Student struct { Name string Age int stuInfo map[string]string }...,函数外原指针不会受到影响 } go 的指针不像是C指针那么危险,会正常有空指针,但是不会发生野指针,这也算是go 指针的一个优势点吧。

    74330

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券