展开

关键词

【笔记】《C++Primer》—— 第19章:特殊工具与技术

这个类型主要是让我们可以将一组整型常量组织在一起,像一个简单文件夹一样 C原本只有一种枚举类型:不限定作用枚举。C11加入了限定作用枚举。 不限定作用枚举和我们知道一样,enum TypeName{mem1, mem2, mem3}; 这里obj必须是整型,可以花括号中直接用整型初始化成员。 限定作用枚举类定义时需要加class/struct,即如enum class TypeName{mem1, mem2, mem3}; 限定作用枚举类成员由于作用枚举类内部,所以必须通过访问符才能得到 ,避免了名称冲突问题 默认情况下枚举值0开始,逐个加1,值不一定唯一 枚举成员是const,因此我们初始化时必须用const,使用时候也可以当作const使用 枚举类成员初始化后就必须使用同枚举类成员才能赋值了 局部类内还可以嵌套类,但是嵌套类可以定义局部类外部,但是必须定义局部类相同作用局部类内嵌套类本质也属于一个局部类,所以嵌套类自身成员必须定义嵌套类内部 19.8 固有的不可移植特性

24940

【笔记】《C++Primer》—— 第一部分:C++基础

,要求不能跳过变量初始化而使用变量,且每个case都有内部一个作用 只要控制结构为真while便会不断执行循环体,如果在while控制结构或循环体定义变量的话,这个变量将会在每次迭代创建又销毁 swicth类似,不能将程序运行凌驾在变量作用上 C++异常类标准库中有定义,分别在stdexcept,exception,new,type_inifo四个头文件,每个异常我们使用它们都有的 ,表示忽视多余实参 不要返回不可拷贝局部变量,也不要返回局部变量引用或指针 C11规定可以使用花括号,利用vector类型来返回列表值 返回数组指针时,要注意保持好正确写法:先看括号,括号内往括号外看 因此一方面是最好保持参数顺序与声明顺序相同以方便查找,另一方面尽量避免用某些成员来初始化其他成员以防止初始化顺序导致问题 C11增加了“委托构造函数”,即可以构造函数初始值列调用非委托构造函数了 由于类内初始化只是声明而已,若外部函数没有获得类完整声明则无法使用类内静态初始化,所以我们应该保持一个良好习惯即即便我们已经类内初始化它,也在外部进行一次定义(但不用初始化)来保证其作用正常

22840
  • 广告
    关闭

    【玩转 Cloud Studio】有奖调研征文,千元豪礼等你拿!

    想听听你玩转的独门秘籍,更有机械键盘、鹅厂公仔、CODING 定制公仔等你来拿!

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

    【STM32H7教程】第9章 STM32H7重要知识点数据类型,变量和堆栈

    使用局部变量注意以下问题:   不同函数可以使用相同名字变量,它们代表不同对象,互不干扰。   形式参数也是局部变量。   局部变量作用函数内部。 9.3.4      变量存储类别 变量作用来分,可以分为全局变量和局部变量,而变量值存在时间来看,可以分为静态存储方式和动态存储方式。   全局变量存储静态存储区,动态存储区可以存放以下数据:   函数形式参数,调用函数时给形参分配存储空间。   局部变量(未加static声明局部变量)。   函数调用时现场保护和返回地址等。 全局变量用static声明,则该变量作用只限于本文件模块(即被声明文件)。 9.4   堆栈 9.4.1      堆栈作用 栈(stack)空间,用于局部变量,函数调时现场保护和返回地址,函数形参等。

    44060

    【笔记】《C++Primer》—— 第四部分:高级主题(完)

    ,此时称为未命名命名空间,在这里面定义变量有静态生命周期,第一次使用时创建,然后直到程序结束才销毁 using声明可以一次引入一个成员,生命周期声明开始到声明所处作用结束为止 using指示可直接 编译器是先按顺序初始化所有的虚基类,然后再按顺序初始化非虚基类,初始化时候按照底往上,同级时候列表左往右顺序初始化 19 特殊工具与技术 准确来说实际上我们并不能重载new和delete C11加入了限定作用枚举 不限定作用枚举类名称是可选,如果这个enum未命名,则必须在定义该enum时就定义它们成员。 限定作用枚举类定义时需要加class/struct,即如enum class TypeName{mem1, mem2, mem3}; 限定作用枚举类成员由于作用枚举类内部,所以必须通过访问符才能得到 局部类是定义函数内部类,局部定义只定义它作用域中可见 局部特点是其所有成员都必须在类内完成定义 同样局部类和函数之间没有权限特权 局部类内嵌套类本质也属于一个局部类,所以嵌套类自身成员必须定义嵌套类内部

    27310

    C语言中,全局变量滥用后果竟如此严重?

    作用看: 全局变量具有全局作用。全局变量只需一个源文件定义,就可以作用于所有的源文件。当然,其他不包括全局变量定义源文件需要用extern关键字再次声明这个全局变量。 静态局部变量具有局部作用。它只被初始化一次,自从第一次初始化直到程序与你新内阁结束都一直存在,他和全局变量区别在于全局变量对所有的函数都是可见,而静态局部变量只对定义自己函数体始终可见。 局部变量也只有局部作用,他是自动对象,他程序运行期间不是一直存在,而是只函数执行期间存在,函数一次调用结束后,变量就被撤销,其所占用内存也被收回。 而静态全局变量则限制了其作用,即只定义该变量源文件内有效,同一源程序其他源文件不能使用它。 局部变量:定义它函数内有效,但是函数返回后失效。“函数内定义变量”,即在一个函数内部定义变量,只本函数范围内有效。 注意:全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。

    38720

    效率编程 之「通用程序设计」

    第 1 条:将局部变量作用最小化 要使局部变量作用最小化,最有力方法就是第一次使用它地方声明。局部变量作用它被声明点开始扩展,一直到外围块结束处。 如果变量是“使用它块”之外被声明,当程序退出该块之后,该变量仍然是可见;如果变量目标使用区域之前或者之后被意外地使用的话,后果将可能是灾难性。 几乎每个局部变量声明都应该包含一个初始化表达式。如果我们还没有足够信息来对一个变量进行有意义初始化,就应该推迟这个声明,直到可以初始化为止。这条规则有一个例外情况与try-catch语句有关。 循环中提供了特殊机会来将变量作用最小化。无论是传统还是高级for循环,都允许声明循环变量,它们作用被限定在正好需要范围之内,这个范围包括循环体,以及循环体之前初始化、测试、更新部分。 System.out.println(face1 + " " + face2); } } 最后一种“将局部变量作用最小化”方式是使方法小而集中。

    19710

    《JavaScript高级程序设计(第四版)》学习笔记(四)第4章

    在按引用传递参数时,值在内存位置会被保存在局部变量,对本地变量修改会反映到函数外部 4.1.4 确定类型 采用typeof操作符用于判断一个变量是否为原始值。 检测原始值,则返回 false typeof 用来检测函数时返回 function 4.2 执行上下文与作用 执行上下文:当js脚本执行时,执行环境会自动创建一个上线文栈,用于保存当前执行环境 使用 var 函数作用声明 使用var 声明变量时,变量会被自动添加到最接近上下文,未声明直接初始化变量会添加到全局作用 未经声明而初始化变量是JavaScript 编程中一个非常常见错误 使用 let 块级作用声明 let 声明变量作用是块级,变量只最近花括号内有效 if(true) { let a; //仅在块内有效 } 与 var 另一个不同在于,同一个作用内不能重复声明两次 标记“离开环境”就回收内存。 工作流程: 垃圾回收器在运行时候会给存储在内存所有变量都加上标记。 去掉环境变量以及被环境变量引用变量标记。

    13820

    【笔记】《C++Primer》—— 第18章:用于大型程序工具

    标准库类型都保证自己析构不会抛出异常 异常自然也可能在构造函数出现,如果我们构造函数体初始化成员自然可以用try-catch处理,但是初始值列表返回之外,为了处理初始值列表异常我们需要用函数try ,不用特指,和模板内部调用成员类似 我们也可以命名空间外部定义命名空间内成员,但是注意只能是在外层,不能在不相干同级作用域中定义 全局作用实际上是一个无名命名空间,我们用::XXX来特指 C11 未命名命名空间中名字作用其所在空间相同,如果定义全局区域则相当于全局作用,定义别的空间中则相当于其他命名空间 除了直接特指命名空间中名称来进行调用外,我们也可以用using XXX 要注意是基类构造顺序是与派生列表基类出现顺序一致,与派生类参数顺序无关 C11允许派生类多个基类中继承构造函数,但是如果多个构造函数都相同的话将产生错误,此时派生类应该自己定义一个构造函数来覆盖它们 ,初始化时候按照底往上,同级时候列表左往右顺序初始化,可以用下面例子加深理解 ?

    19220

    React Native for Android源码分析 一《JNI智能指针之介绍篇》

    但由于局部引用表容量有限,返回至JVM前,可以调用DeleteLocalRef先行销毁,避免局部引用表超限引起崩溃。 弱全局引用 与全局引用一样具有全局作用,但不会影响GC回收, GC可以随时回收该引用对应java object。 由上可见,JNI智能指针第一个需求,就是要自动管理jobject生命周期,当进入与离开对应作用时,需要自动调用对应生命周期创建与销毁函数。这在C++,通常会结合构造与析构函数来进行配对调用。 若功能仅限于此,就与普通智能指针和mutext锁管理机制类似了,更重要需求是C++层提供与被管理Java对象镜像结构C++对象,形成高层次封装。 综上介绍,ReactNative for Android,为了简化Native层对Java层调用,提供了镜像结构wrapper class,结合智能指针,将jobject生命周期管理、java

    53150

    深入理解JavaScript闭包之什么是闭包

    然后,使用 this、arguments 和其他命名参数值来初始化函数活动对象。 ,其中不同地方就是在于内部函数 bar 执行前,外部函数返回。 bar() 依然持有对该作用引用,这个引用就叫做闭包。这个函数定义词法作用以外地方被调用。闭包使得函数可以继续访问定义时词法作用。 这样修改之后,每次迭代内使用 IIFE(立即执行函数)会为每个迭代都生成一个新作用,使得延迟函数回调可以将新作用封闭每个迭代内部,每个迭代内部都会含有一个具有正确值变量可以访问。 因为函数是 JavaScript 唯一拥有自身作用结构,因此闭包创建依赖于函数。 需要注意点 容易导致内存泄漏。闭包会携带包含它函数作用,因此会比其他函数占用更多内存。

    25830

    【笔记】《C++Primer》—— 第6章:函数

    当函数被调用时,调用带来实参会被初始化给形参(类似新定义变量),原函数执行中断被调函数开始执行,直到return 要注意赋值给形参时候,函数没有规定实参求值顺序 形参必定会被拷贝初始化(显式赋值或默认赋值 若将局部变量用static创建,则得到局部静态对象,此时它只能在此作用域中使用但生命周期直到程序终结 函数声明也叫做函数原型,含有函数声明头文件应被包含到定义函数源文件 6.2 参数传递 函数形参可以是引用类型 返回原理实际上用结尾return初始化一个临时量作为结果,也是拷贝得到,所以要谨记不要返回不可拷贝局部变量,也不要返回局部变量引用或指针,例如不要返回局部数组指针。 返回数组指针时,要注意保持好正确写法:先看括号,括号内往括号外看,然后数组括号对应是前面紧接着数组名,数组具体元素类型要看数组前面的类型名,用括号来使星号和引用号与类型名相隔离(下面的例子若去掉括号会变为拥有十个 上面一条可以看到这样func声明会变得非常复杂,C11增加了一种更加清晰声明方法称为尾置返回类型,方法是写一个返回类型为auto函数,然后声明后面用箭头号->指出真正返回类型 ?

    22430

    C语言万字基础笔记总结(三)

    120进行分开赋值,打印结果应该是赋值后值;第三次打印,是main函数,由于a是全局变量,func对其影响是有的,所以a=119继续保持,而bfunc变成了局部变量,赋值仅仅作用在func函数 三、作用 当变量被定义程序不同位置时,它作用范围时不一样,这个作用范围就是作用。 C语言编译器可以确认4种不同作用 ①、代码块作用 ②、文件作用 ③、原型作用 ④、函数作用 四、链接属性 external(外部) 多个文件声明同名标识符表示同一个实体 internal 这部分区域大小程序运行前就已经确定,并且内存区域通常属于只读。代码段,也有可能包含一些只读常数变量,例如字符串常量等。 数据段 通常用来存放已经初始化去那句变量和局部静态变量。 宏定义作用定义位置开始到整个程序结束。

    17720

    重新回味·Block·

    ,需要在初始化结构体函数添加与局部变量相同类型参数; 3、局部变量就通过初始化构造函数传递到Block结构体__testBlock_block_impl_0,同时赋值给Block成员变量; 4、 通过上述截获局部变量理论,C语言数组会作为成员变量保存到Block实例结构初始化Block时,由成员变量赋值给局部变量,猜测代码如下: void func(char a[]){ char 前面的小节,我们仅仅讲解了Block截获局部变量,那么,Block修改截获局部变量又会带来什么样问题呢? Block变量作用之外通过指针访问使用,定义栈上__block局部变量和Block超出作用时将被废弃。 __block变量对象也被栈复制到堆上,当__block变量堆上释放时,该对象才能得到释放; 当使用__weak修饰__block变量赋值时候,由于赋值对象作用问题而释放,从而导致__block

    20440

    【JavaScript】 基础

    ") typeof NaN Number(undefined) Number(null) parseInt(param) 参数为要解析数据 作用数据解析整数值 过程 : 1. 作用 JavaScript 作用分为全局作用和函数作用,以函数{ }作为划分作用依据 全局变量和全局函数 只要在函数外部使用 var 关键字定义变量,或函数都是全局变量和全局函数,在任何地方都可以访问 所有省略 var 关键字定义变量,一律是全局变量 局部变量/局部函数 函数内部使用 var 关键字定义变量为局部变量,函数内部定义函数也为局部函数,只能在当前作用域中使用,外界无法访问 作用局部作用域中访问变量或函数,首先从当前作用域中查找,当前作用域中没有的话,向上级作用域中查找,直至全局作用 Array 数组 创建 var arr = []; 特点 数组用于存储若干数据, 返回添加之后数组长度 shift() 移除数组第一个元素 返回被移除元素 splice(index,num) 数组添加 / 删除项目 返回被删除项目 toString() 将数组转换成字符串类型

    7920

    全栈必备 :C语言基础

    C99,又增加了5个关键字inline restrict _Bool _Complex _Imaginary, 后来C11又增加了7个关键字_Alignas _Alignof _Atomic _ 函数返回指针时可能存在潜在问题: 返回初始化指针 返回指向无效地址指针 返回局部变量指针 返回指针但是没有释放内存 函数指针可以 以编译时未确定顺序来执行函数。 static无论是全局还是局部,都存储在数据区,其生命周期为整个程序,如果是静态局部变量,其作用为一对{}内,如果是静态全局变量,其作用为当前文件。 运行时 C语言运行时数据结构,堆栈为局部变量提供存储空间,为函数调用提供还原信息,其临时存储区,用于计算复杂算术表达式;调用记录支持过程调用,并记录调用结束后返回调用点所需要全部信息;全局变量数据有 关于这部分代码对于开发者不可见,属于C标准运行时一部分。 函数调用和被调用过程,都伴随着入栈和出栈,因此栈发挥着重要作用。函数局部变量、参数、返回值都存在栈区

    11130

    C语言入门这一篇就够了-学习笔记

    另外,相对于其他高级语言,比如C++、java、C#等来说,C语言编写代码运行效率要高。 介绍C语言数据类型和基本语法之前,先说说C程序结构和C文件结构。 若干个库文件:库文件是编译后二进制文件,一般由若干C文件编译后组成,其中包含了若干个函数可执行代码;这些库文件函数可执行代码连接时候合并到最终可执行文件。 ,可以外部使用; static:声明静态变量,static修饰变量存储静态变量区,修饰全局变量时,表示该变量为全局静态变量,作用为当前文件;修饰函数时表示函数作用为当前文件内部; 修饰局部变量时 ,表示该变量为静态局部变量,只被初始化一次,赋值之后值会保持最新值,也就是说局部静态变量生命周期被扩展到整个程序运行时间段内。 return, goto return功能:终止执行函数,赋值(可选); 将控制权返回给调用函数下一条语句 goto:无条件转移语句,跳转语句; 如上代码,不使用goto情况下,会分别打印出line

    34430

    萌新java学习之路——第一周

    局部变量有且只能在当前所处代码块中使用,超出当前代码块范围无效!!!【作用问题】 作用范围以内,任何地方可以直接使用对应变量 一个变量作用范围以内,不能重定义同名变量,报错! 局部变量未赋值不能使用 9 循环结构 9.1 为什么使用循环 开发我们会使用一些功能代码多次,如果使用CV大法,治标不治本!!!会出现一下一些问题: 1. 代码过于臃肿!!! void: 返回值类型,这里void表示没有返回值 main: 方法名,需要符合小驼峰命名法,见名知,动宾结构 (String[] args): 形式参数列表 { 方法体 } 方法模版: public 一个方法有且只能有一个返回值类型。 目前建议: 当下不要考虑使用数组作为返回值类型。 10.7.3 方法名 见名知,动宾结构,小驼峰命名法!!! 希望大家代码是一个好代码。 顺序也是一致! 考虑好对应数据类型。 10.7.5 方法封装过程 需求分析 1. 分析需求作用是什么? 2. 考虑方法名字,见名知,动宾结构,小驼峰命名法 3.

    19920

    深入理解Block

    ,需要在初始化结构体函数添加与局部变量相同类型参数; 3、局部变量就通过初始化构造函数传递到Block结构体__testBlock_block_impl_0,同时赋值给Block成员变量; 4、 通过上述截获局部变量理论,C语言数组会作为成员变量保存到Block实例结构初始化Block时,由成员变量赋值给局部变量,猜测代码如下: void func(char a[]){ char Block变量作用之外通过指针访问使用,定义栈上__block局部变量和Block超出作用时将被废弃。 那Block超出作用是如何存在呢? ,赋值给该__block变量对象也被栈复制到堆上,当__block变量堆上释放时,该对象才能得到释放; 当使用__weak修饰__block变量赋值时候,由于赋值对象作用问题而释放,从而导致

    32610

    原来C语言和其他高级语言最大区别是这个...

    2) 自动存储时期 Automatic 除了静态存储以外变量都是自动存储时期,或者说只要是代码块内定义非static变量,系统会肚脐自动非配和释放内存; 作用 作用:一个变量定义该变量自身文件可见性 (访问或者引用) C语言中,一共有3作用: 1) 代码块作用 代码块定义变量都具有该代码作用。 从这个变量定义地方开始,到这个代码块结束,该变量是可见; 2) 函数原型作用 出现在函数原型变量,都具有函数原型作用,函数原型作用变量定义处一直到原型声明末尾。 3) 文件作用 一个在所有函数之外定义变量具有文件作用,具有文件作用变量定义处到包含该定义文件结尾处都是可见; 链接 链接:一个变量组成程序所有文件可见性(访问或者引用); 若申请成功,函数返回申请到内存起始地址,若申请失败,返回NULL。

    27530

    相关产品

    • TDSQL MySQL 版

      TDSQL MySQL 版

      分布式数据库 TDSQL MySQL版是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。目前 TDSQL 已经为超过500+的政企和金融机构提供数据库的公有云及私有云服务,客户覆盖银行、保险、证券、互联网金融、计费、第三方支付、物联网、互联网+、政务等领域。TDSQL MySQL 版亦凭借其高质量的产品及服务,获得了多项国际和国家认证,得到了客户及行业的一致认可。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券