c++郑莉

c++郑莉

变量

初始化

  • {}列表初始化不允许有数据丢失
  • 常量必须初始化
int a{1.2};//错
int b = {1.2};//错
int c(1.2);//对

符号常量

const float PI = 3.1415926;//code segment
static int a;//bss segment
内存数据
code segment通常情况下,代码段是可共享的,使其可共享的目的是,对于频繁被执行的程序,只需要在内存中有一份副本即可。代码段是只读的,使其只读的原因是防止一个程序意外地修改它的指令。
C程序的代码部分全部放在代码段。程序运行时由操作系统从程序映像中取出代码段,布局在程序的内存地址最低的区域,然后跳转到代码段的main函数开始运行程序,程序结束后由操作系统收回这段内存区域。
data segment已初始化数据段(data segment)用来存放C程序中的所有已赋值的全局变量和静态变量、对象
字符串常量一般放在.rodata段里
bss segment未初始化数据段(bss segment)用来储存C程序中所有为赋值的全局和静态变量。在程序映像中没有储存bss段,只有它们的空间大小信息;程序运行前由操作系统根据这个大小信息分配bss段,且数据值全部初始化为零,布局在与data段相邻的区域。程序结束后有操作系统回收这段内存区域。
显然,bss段的储存单元也有与程序代码相同的生命周期,但与data段不同的是如果城程序没有运行,bss段的储存空间是不存在的,因而也就不会有初始值。在程序运行前,这些储存单元会被初始化为零。此后,bss段的储存单元的性质完全与data段相同
stack栈(stack)用来存放C程序中所有的局部的非静态型变量、临时变量,包含函数形参和函数返回值。
程序映像中没有栈,在程序开始运行时也不会分配栈。每当一个函数被调用,程序在栈段中按函数栈框架入栈,就分配了局部变量存储空间。如果这些变量有初始化,就会有赋值指令给这些变量送初值,否则变量的值就呈现随机性。当函数调用结束时,函数栈框架出栈,函数局部变量释放储存空间。
栈的储存特点决定了C程序中所有局部的非静态变量的储存方式是动态的。函数调用时得到分配,赋予初值;函数调用结束之后释放空间,变量不复存在。下次调用时在重复这一过程。
每一个栈分配的存储空间是比较小的,VS编译器一般默认大小为4kb,因此,局部变量分配的空间不能过大,否则会造成栈溢出,程序崩溃。比如定义一个长度很长的局部数组,这是不可取的。当然,程序员也可自行设定栈的大小。在VS编译器中,在“项目”->“属性”->“连接器”->“系统”页面中设定堆栈的大小。
heap堆(heap)用来存放C程序中动态分配的存储空间。
程序映像中的没有堆,在程序开始运行时也不会分配堆,函数调用也不会分配堆。堆的存储空间分配和释放是通过指定的程序方式来进行的,即由程序员使用指令分配和释放,若程序员不释放,程序结束后可能由操作系统回收。
C语言程序可以通过使用指针、动态内存分配和释放函数来实现堆的分配和释放。程序可通过动态内存分配和释放来使用堆区,堆区有比栈更大的储存空间、更自由的使用方式。
堆和栈的共同点是动态储存,处于两个区域的储存单元可以随时分配和释放,所以这些储存单元的使用特点呈现临时使用的特点。data段的特点是静态储存的,处在这个区域的储存单元随程序运行而存在,随程序结束被释放,相对于程序生命周期,data段存储单元的使用特点呈现持久性的特点。data段由于持久占有储存空间,因此大小会被操作系统限定,而堆可以达到空闲空间的最大值。
堆和栈的不同是分配方式的不同,栈是编译器根据程序代码自动确定的大小,到函数调用时有指令自动完成分配和释放的;堆则完全由程序员指定分配大小、何时分配、何时释放。堆的优点是分配和释放是自由的,缺点是需要程序员自行掌握分配和释放的时机,特别是释放的时机,假如已经释放了还要引用堆会产生引用错误,或者始终没有释放会产生内存泄漏。
img
  • 注意事项
    1. 不要通过指针引用其他函数的局部变量,否则得到的值将是一个随机的值
    2. 不要在函数中定义尺度过大的变量,比如长度很长的数组,否则会造成栈溢出
    3. 动态分配的内存空间被释放后,不能再引用,否则会出现引用错误。
    4. free函数只能释放动态创建的内存空间,如果释放非动态创建的内存空间,会出现错误

浮点数

  1. 都是近似存储,不能直接比较大小
  2. 一般用double,不用float

运算符

  • 赋值运算符=

    1. 表达式的值/类型同赋值运算符左边
  • 逗号运算符,

    1. 从左到右计算,计算结果为最右侧
    2. 优先级低于赋值运算符比如 a = 3 * 5, a * 4;//60
  • 关系运算符

    1. < <= > >= 优先级高于 == !=
    2. 关系表达式结果为bool,值为true false
  • 逻辑运算符

    1. 优先级 !高于 && 高于 ||
    2. 结果为bool,值为true false
    3. 具有短路特性
  • 条件表达式?

    1. 表达式1 ? 表达式2 :表达式3;
    2. 表达式1必须为布尔类型
    3. 先求解1
    4. 若1真,则求解表达式2,表达式2为最终结果;反之3
    5. 优先级高于赋值低于逻辑
  • sizeof

    1. sizeof(short)
    2. sizeof x;
    3. 类型名必须加括号
  • 位运算

    • 按位与&
      1. 某一位置为0:a = a & 0Xfffffffe;//int
      2. 取某些字节 a = a & 0xffff;//取int的低2个字节
    • 按位或|
      1. 将某些位置为1:a = a | 0xff;
    • 按位异或^
      1. 与0异或不变,与1异或反转
      2. 将某些位反转:a = a ^ 0xff;
    • 按位取反~
    • 左移运算<<
      1. 低位补0,高位舍去
    • 右移运算>>
      1. 低位舍弃
      2. 高位
        1. 无符号数补0
        2. 有符号数补符号位

优先级

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值