C++常见知识点总结

常见字符

 *

  1. 注释:/* 这是一个注释*/
  2. 乘法:a * b
  3. 取值运算符:*指针变量,int a = 4,*a  ????
  4. 指针变量:数据类型 *变量名, int *no = &bh,代表了no是一个指针
  5. 数据类型:int*:整型指针类型、char* 字符指针类型,char* c=(char *) &b。int no=38,int* ptr=&no, &no和ptr是一个东西,no和*ptr是一个东西。
  6. 间接值/解除引用/解引用运算符:

注:int *no 和 int* no什么区别

 1. 实际上没有区别
 2. int* a, b; 这里 a 是指向 int 的指针,而 b 只是一个普通的 int 整数变量。
 3. int *a, *b; 这样的声明清晰地表明 a 和 b 都是指向 int 的指针。

::

  1. 变量属于哪个域:std::count<<"no"
  2. 当局部变量和全局变量名称相同时,会屏蔽全局变量使用局部变量,如果想使用全局变量,使用::,:: a。

常见关键词 

typedef

数据类型的别名

static(静态)

静态局部变量

  1.  主要作用:会影响变量的存储期和作用域。
  2. 只会被初始化一次
  3. 静态局部变量:static修饰的局部变量生命周期和程序相同。即在函数调用结束后不会被销毁,而是保持其值直到下次调用。
  4. 静态类成员:用 static 声明的类成员属于整个类,而不是类的各个实例。

const(常量)

  1. 主要作用:增强程序的安全性
  2. 初始化之后,值不能被修改
  3. 当 const 修饰类的成员函数时,表示该函数不会修改类的任何成员变量

指针

  1.  常量指针:const 数据类型 *变量名;不能通过解引用的方法修改内存地址中的值(用原始的变量名是可以修改的)。
    1. Int a=3,b=4;

      const int* p=&a; #报错

      *p = 13; p=&b; #不报错

  2. 指针常量
    1. 数据类型 * const 变量名;
    2. 指向的变量(对象)不可改变。
    3. 在定义的同时必须初始化,否则没有意义。
    4. 可以通过解引用的方法修改内存地址中的值。
    5. Int a=3,b=4;

      const int* p=&a; #不报错

      *p = 13; p=&b; #报错

    6. 新名字:引用

  3. 常指针常量

    1. const 数据类型 * const 变量名;

    2. 指向的变量(对象)不可改变,不能通过解引用的方法修改内存地址中的值。

    3. 新名字:常引用。 

    4. 常量指针:指针指向可以改,指针指向的值不可以更改。

      指针常量:指针指向不可以改,指针指向的值可以更改。

      常指针常量:指针指向不可以改,指针指向的值不可以更改。

      记忆秘诀:*表示指针,指针在前先读指针;指针在前指针就不允许改变。

      常量指针:const 数据类型 *变量名

      指针常量:数据类型 * const 变量名

 void

  1. 函数的返回值用void,表示函数没有返回值。
  2. 函数的参数填void,表示函数不需要参数(或者让参数列表空着)。
  3. 函数的形参用void *,表示接受任意数据类型的指针。
  4. 注意:
    1. 不能用void声明变量,它不能代表一个真实的变量,但是,用void *可以。
    2. 不能对void *指针直接解引用(需要转换成其它类型的指针)。
    3. 把其它类型的指针赋值给void*指针不需要转换。
    4. 把void *指针赋值给把其它类型的指针需要转换。

内存

内存分为内核空间和用户空间,内核空间由操作系统管理,与程序员没什么关系。我们写的程序运行在用户空间。一个c++源程序编译成可执行程序后,二进制文件的大小是固定的,最多几十兆。

程序运行时,内存主要分成四个区,分别是栈、堆、数据段和代码段。

栈:存储局部变量函数参数和返回值。不管计算机的内存是8G还是16G,分配给栈的只有几兆。修改系统参数可以调整栈的大小。

堆:存储动态开辟内存的变量。内存越大,分配的内存就越大。

n数据段:存储全局变量和静态变量。

代码段:存储可执行程序的代码和常量(例如字符常量),此存储区不可修改

栈和堆的主要区别:

1)管理方式不同:栈是系统自动管理的,在出作用域时,将自动被释放;堆需手动释放,若程序中不释放,程序结束时由操作系统回收。

2)空间大小不同:堆内存的大小受限于物理内存空间;而栈就小得可怜,一般只有8M(可以修改系统参数)。

3)分配方式不同:堆是动态分配;栈有静态分配和动态分配(都是自动释放)。

4)分配效率不同:栈是系统提供的数据结构,计算机在底层提供了对栈的支持,进栈和出栈有专门的指令,效率比较高;堆是由C++函数库提供的。

栈的效率非常高,堆是用链表来管理的,效率会低一点。

5)是否产生碎片:对于栈来说,进栈和出栈都有着严格的顺序(先进后出),不会产生碎片;而堆频繁的分配和释放,会造成内存空间的不连续,容易产生碎片,太多的碎片会导致性能的下降。

6)增长方向不同:栈向下增长,以降序分配内存地址;堆向上增长,以升序分配内存地址。

动态分配内存new

        申请内存的语法:new 数据类型(初始值); // C++11支持{}

        如果动态分配的内存不用了,必须用delete释放它,否则有可能用尽系统的内存。

for (int ii = 1; ii > 0; ii++){int* p = new int[100000];     // 一次申请100000个整数。cout << "ii="<<ii<<",p=" << p << endl;}

内存会螺旋式越来越大,(一会大一会小,是因为系统有交换区)

静态分配内存

空指针

  1. 用0或NULL都可以表示空指针。int* p=0,表示还没有指向任何地址。
  2. 如果对空指针使用delete运算符,系统将忽略该操作,不会出现异常
  3. 用0和NULL表示空指针会产生歧义,C++11建议用nullptr表示空指针,也就是(void *)0。

野指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/15530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP揭秘者-怎么执行生产订单ATP检查及其注意点

文章摘要&#xff1a; 上篇文章给大家介绍生产订单ATP检查的相关后台配置&#xff0c;大家可以按照配置步骤去进行配置&#xff0c;配置完之后&#xff0c;我们接下来就是要执行ATP检查。本篇文章具体给大家介绍怎么来执行生产 订单ATP检查及其注意点。 执行生产订单ATP检查的…

Qt for android 获取USB设备列表(二)JNI方式 获取

简介 基于上篇 [Qt for android 获取USB设备列表&#xff08;一&#xff09;Java方式 获取]&#xff0c; 这篇就纯粹多了&#xff0c; 直接将上篇代码转换成JNI方式即可。即所有的设备连接与上篇一致。 (https://listentome.blog.csdn.net/article/details/139205850) 关键代码…

Android卡顿丢帧低内存与adb shell内存状态

Android卡顿丢帧低内存与adb shell内存状态 卡顿丢帧除了CPU/GPU层面&#xff0c;另外&#xff0c;也需要特别注意整机低内存情况。kswapd0 是一个内核工作线程&#xff0c;内存不足时会被唤醒&#xff0c;做内存回收工作。 当内存频繁在低水位的时候&#xff0c;kswapd0 会被频…

Linux基础(六):Linux 系统上 C 程序的编译与调试

本篇博客详细分析&#xff0c;Linux平台上C程序的编译过程与调试方法&#xff0c;这也是我们后续程序开发的基础。 目录 一、第一个hello world程序 1.1 创建.c文件 1.2 编译链接 运行可执行程序 二、编译链接过程 2.1 预编译阶段 2.2 编译阶段 2.3 汇编阶段 2.4 链…

qemu+gdb调试linux内核

打开CONFIG_DEBUG_INFO,编译内核 通过图形菜单配置该宏,执行make menuconfig。 kernel hacking —> compile-time checks and compiler options —> compile the kernel with debug info 验证是否打开成功,grep -nr “CONFIG_DEBUG_INFO” .config。 打开成功,然后…

plsql 学习

过程化编程语言 赋值&#xff1a;&#xff1a; ||&#xff1a;连接符号 dbms_output.put_line() :输出的语句 var_name ACCOUNTLIBRARY.USERNAME%type; 变量名&#xff1b;某个表的数据类型&#xff1b;赋值给变量名 用下面的方法更好用 异常exception 循…

力扣HOT100 - 75. 颜色分类

解题思路&#xff1a; 单指针&#xff0c;对数组进行两次遍历。 class Solution {public void sortColors(int[] nums) {int p 0;int n nums.length;for (int i 0; i < n; i) {if (nums[i] 0) {int tmp nums[i];nums[i] nums[p];nums[p] tmp;p;}}for (int i p; i …

存储+调优:存储-IP-SAN-EXTENSION

存储调优&#xff1a;存储-IP-SAN-EXTENSION 文件系统的锁标记 GFS&#xff08;锁表空间&#xff09; ----------- ------------ ------------- 节点 | ndoe1 | | node2 | | node3 | ---------- ------…

GNSS中的多路径效应原理及计算方法

1 多路径效应原理 图1 多路径效应原理图 2 计算方法 如需原文&#xff0c;可加多源融合定位与智能控制讨论群获取,QQ群号&#xff1a;51885949

【OceanBase诊断调优】—— 直连普通租户时遇到报错:Tenant not in this server

本文介绍了直连 OceanBase 数据库中的普通租户时&#xff0c;出现报错&#xff1a;ERROR 5150 (HY000) : Tenant not in this server 的处理方法。 问题描述 在 n-n 或者 n-n-n (n>1) 的部署架构中&#xff0c;使用 2881 端口 直连 OceanBase 集群的普通租户&#xff0c;可…

SpringBoot运维篇(打包,多环境,日志)

文章目录 一、SpringBoot程序的打包与运行二、配置高级三、多环境开发四、日志 一、SpringBoot程序的打包与运行 刚开始做开发学习的小伙伴可能在有一个知识上面有错误的认知&#xff0c;我们天天写程序是在Idea下写的&#xff0c;运行也是在Idea下运行的。 ​但是实际开发完成…

CDH6.3.2集成Flink1.17

直接运行脚本即可&#xff0c;一键输出相关依赖包 运行步骤已给到文档 下载地址

Html基础笔记

Html超文本标记语言 (HyperText Markup Language) 超文本 指的是网页中可以显示的内容(图片,超链接,视频,) 标记语言 标记–>标签(标注) 例如:买东西的时候—>商品具有标签,看到标签就知道商品的属性(价格,材质,型号等,) 标记语言就是提供了很多的标签,不同的标签…

若依框架对于后端返回异常后怎么处理?

1、后端返回自定义异常serviceException 2、触发该异常后返回json数据 因为若依对请求和响应都封装了&#xff0c;所以根据返回值response获取不到Code值但若依提供了一个catch方法用来捕获返回异常的数据 3、处理的方法

antd design 自定义表头

<template><a-card :bordered"false"><div class"contentWrap"><!-- 查询区域 --><div class"table-page-search-wrapper"><a-form layout"inline" keyup.enter.native"searchQuery">&…

云端智享——记移动云手写docker-demo

目录 前言什么是移动云&#xff1f;为何我会使用移动云&#xff1f;移动云“好”在哪里&#xff1f;资源大屏显示继续项目部署其他细节 移动云产品的评价未来展望 前言 在如今这个万物都上云的时代&#xff0c;我们需要选择合适的云产品&#xff0c;而移动云有着独特的优势和广…

1.存储部分

1.Flash Memory--闪速存储器&#xff08;注&#xff1a;U盘&#xff0c;SD卡就是闪存&#xff09;在EEPROM基础上发展而来的&#xff0c;断电后也能保存信息&#xff0c;且可进行多次 快速擦除重写。注意&#xff1a;由于闪存需要先擦除再写入&#xff0c;因此闪存写的速度要比…

python-绘制五星红旗(非标准)

完整代码如下&#xff1a; #五星红旗&#xff08;非标准版&#xff09; from turtle import* import math from random import* tracer(0) penup() goto(-640,220) pendown() color(gold,gold) begin_fill() for i in range(5): fd(150) right(144) # 大五角星 penup(…

【一个糟糕的词:省流】

今日思考&#xff0c;博主分享&#x1f4dd;&#xff0c;原文如下&#xff0c; 我最近听到了一个特别糟糕的词叫省流。我甚至认为这个词可以用来衡量一个人的智商啊&#xff0c;我们可以把一个知识简单的分成三部分问题&#xff0c;答案思维方式就是这个答案是怎么推导出来的啊…

Python数据可视化(二)

Patches绘制几何图形 模块 patches 主要用来完成多边形的绘制工作。这些多边形都是以类&#xff08;Class&#xff09;的形式出现的&#xff0c; 主要包括圆&#xff08;Circle&#xff09;、椭圆&#xff08;Ellipse&#xff09;、矩形&#xff08;Rectangle&#xff09;、圆…