当前位置: 首页 > news >正文

C++与C基础重叠部分

Cmake

  • CPP程序开发过程
    • 计算机硬件—>机器语言—>汇编—>cpp
    • cpp—>机器(gcc)
    • Make(makefile)—>本地智能批处理翻译机制
    • Cmake—>跨平台生成不同设备上的makefile进行执行

Cpp基础学习

基本知识

  • 基本格式
#include<iostream>
using namespace std;
int main(){cout << "hello cpp" << endl;system("pause");return 0;
}
  • 变量
    • 意义
      • 方便管理内存,给一段指定内存空间起名
    • 16进制可以表示一个内存空间—>给内存起名称a—>a就是变量
    • 创建
      • 数据类型 变量名 = 变量初始值
  • 常量
    • 不可修改的数据
    • 定义方式
      • #define宏定义—#define 常量名 常量值
      • const修饰变量 const 数据类型 常量名 = 常量值
  • 关键字
    • 有特殊含义且不能被再被命名—不要用关键字进行命名
  • 标识符名规则
    • 标识符不可以是关键字
    • 标识符只能由字母数字下划线
    • 第一个字符不能为数字
    • 标识符区分大小写

数据类型

  • 存在意义—给变量分配合适的内存空间
  • sizeof—输出字节—取决于多少位的操作系统—统计数据类型所占内存大小
    • 语法—sizeof(数据类型或者变量)
  • 有效数字—所有展示数字的位数
  • 实型—浮点型
    • float—4字节
    • double—8字节
    • 默认定义数据是double因此,float f1 = 3.14f这样才能真正定义为float
    • 一般显示6位有效数字
  • 字符型—表示单个字母—占用一个字节—char
    • 单引号
    • 字符型变量并不是把字符本身放入内存中存储,而是将对用的ascii编码放入到存储单元
    • 查看ascii—cout<< (int)ch << endl;
    • 常见
      • a—97
      • A—65
  • 转义字符
    • 用于表示一些不能显示出来的ascii字符
    • 常见
      • \n—换行
      • \t—水平制表—8个字符空间
      • //—反斜杠/必须输出两个
  • 字符串型
    • 两种风格
      • char 变量名[] = “字符串” — C风格
      • string 变量名 = “字符串” — CPP风格 — #include
  • 布尔数据类型
    • true
    • false
  • 数据的输入
    • 用于从键盘获取数据
      • cin >> 变量
int a = 0;
cout<< "请输入a: \n" << endl; 
cin >> a;

新型类型转换方式

  • c语言—(type)(expression)
  • 缺点
    • 这种类型转换容易产生不良后果
    • 在源码中无法快速定位所有使用强制类型转换的语句
  • cpp将强制类型转换分为四种不同类型
    • 语法
      • ***_cast(expression)
  • 四个不同的关键字
    • static_cast—静态类型转换
      • 用于基本类型间的转换
      • 不能用于基本类型指针间的转换
      • 用于有继承关系类对象之间的转换和类指针之间的转换
    • const_cast
      • 用于去除变量的只读属性
      • 强制转换的目标类型必须是指针引用
    • dynamic_cast—只能用于指针
      • 用于有继承关系的类指针
      • 用于有交叉关系的类指针间转换
      • 具有类型检查功能
      • 需要虚函数的支持
    • reinterpret_cast
      • 用于指针类型间的强制转换
      • 用于整数和指针类型间的强制转换

运算符

  • 算术运算符
  • 赋值运算符
  • 比较运算
  • 逻辑运算

流程结构

  • 选择结构
    • if
    • 三目运算符
    • switch
      • switch中表达式类型只能是整型或者字符型
      • switch不可以判断区间
  • 循环结构
    • while
    • dowhile
    • for
  • 跳转语句
    • break
    • continue
    • goto
      • goto 标记

一维数组

  • 特点
    • 连续内存空间
    • 每个数据元素都是相同的
  • 定义
    • 数据类型 数组名[数组长度]
    • 数据类型 数组名[数组长度] = {数值1, 数值2…}
    • 数据类型 数组名[] = {值1, 值2,…};
  • 数组名的用途
    • 可以统计整个数组在内存中的长度
    • 可以获取数组在内存中的首地址
int arr[] = {1,2,3}
int len = sizeof(arr)
int ev_len = sizeof(arr)/sizeof(arr[0])
  • 数组首地址访问的两种形式
    • cout << arr
    • cout << &arr[0]
    • 元素和地址访问不一样

二维数组

  • 定义方式
    • 数据类型 数组名称[行数][列数]
    • 数据类型 数组名称[行数][列数] = {{1,2,3},{2,3,4}}
    • 数据类型 数组名称[行数][列数] = {1,2,3,2,3,4}
    • 数据类型 数组名[][列数] = {1,2,3,2,3,4}
  • 数组名称
    • 查看二维数组所占内存空间
    • 查看首地址

函数

  • 值传递问题
    • 形参发生变化实参不会变化
  • 函数声明
    • int max(int a, int b);
  • 分文件编写
    • .h文件中包含.cpp中的所有库函数依赖,只声明不定义
    • .cpp关联后只需要定义即可

指针

  • 概念
    • 通过指针间接访问内存
    • 通过指针变量记录内存的地址编号
    • 指针就是用来保存地址
  • 定义指针
    • 数据类型 *指针变量名
  • 初始化方式
    • 数据类型 *p = &变量
  • *p代表解应用—可以修改数据
  • 指针所占的内存大小
    • 32位操作系统下占用4个字节—sizeof后不论什么类型只要是指针,占的内存只依赖于操作系统的大小
  • const修饰指针
    • const修饰指针—常量指针—const int * q = &a—指针的指向可以改,但是指针指向的数值不能改
    • const修饰常量—指针常量—int * const p = &a—指针的指向不可以改,但是指针指向的数值可以改
    • const修饰指针同时又修饰常量—const int * const p = &a—指针的指向和指针指向的值都不可以改

指针和其他的配合使用的配合使用

  • 利用指针访问数组中的元素—数组名就是数组第一个元素的地址
  • 指针和函数—地址传递—实现对调用主函数变量的修改

结构体

  • 概念—结构体属于用户自定义的数据类型,允许用户存储不同的数据类型
struct student
{string name;int age;
};
// 直接定义
struct student
{string name;int age;
}ss;
  • 调用和变量定义
struct student s1;
student ss; //可省略struct
struct student s2 = {...};
s1.name = "zhangsan";
  • 结构体数组
struct student s1[] = {{"zhangsan", 18},{"lisi", 22}
};
s1[1].age = 32;
  • 结构体指针
struct student s1[] = {{"zhangsan", 18},{"lisi", 22}
};
struct student * ss = s1;
cout << ss->age << endl;
  • 结构体嵌套结构体
struct student {string name;int age;
};
struct teacher t1{string name;int age;struct student s1;
};
  • 结构体做函数参数
    • 值传递—形参改变实参不变
    • 地址传递—形参变实参也变
    • 将值传递改为地址传递可以保证传参过程中开销较小
    • 但是这种方式会导致函数内可以改变结构体信息
      • 解决—const加入
      • 在函数形参加上const即可 void test(const int *s)

相关文章:

C++与C基础重叠部分

Cmake CPP程序开发过程 计算机硬件—>机器语言—>汇编—>cppcpp—>机器(gcc)Make(makefile)—>本地智能批处理翻译机制Cmake—>跨平台生成不同设备上的makefile进行执行 Cpp基础学习 基本知识 基本格式 #include<iostream> using namespace std;…...

神经网络基础部件-卷积层详解

前言 在全连接层构成的多层感知机网络中&#xff0c;我们要通过将图像数据展平成一维向量来送入模型&#xff0c;但这会忽略了每个图像的空间结构信息。理想的策略应该是要利用相近像素之间的相互关联性&#xff0c;将图像数据二维矩阵送给模型中学习。 卷积神经网络(convolu…...

【计算机网络】HTTPS协议原理

文章目录一、认识HTTPS协议二、为什么要发明HTTPS三、HTTP与HTTPS的区别四、常见的加密方式1. 对称加密2. 非对称加密3. 数据摘要4. 数字签名五、HTTPS的原理探究方案1&#xff1a;只使用对称加密方案2&#xff1a;只使用非对称加密方案3&#xff1a;双方都使用非对称加密方案4…...

21岁,华科博士在读,我的赛事Top经验

Datawhale干货 作者&#xff1a;vaew&#xff0c;华中科技大学&#xff0c;博士二年级在读简介笔者vaew&#xff0c;21岁&#xff0c;现为华中科技大学机械科学与工程学院陶波教授课题组博士二年级学生。主要研究方向是基于视触融合的机器人灵巧操作。学业之余的研究兴趣包括图…...

基于ThinkPHP6.0+Vue+uni-app的多商户商城系统好用吗?

likeshop多商户商城系统适用于B2B2C、多商户、商家入驻、平台商城场景。完美契合平台自营联营加盟等多种经营方式使用&#xff0c;系统拥有丰富的营销玩法&#xff0c;强大的分销能力&#xff0c;支持官方旗舰店&#xff0c;商家入驻&#xff0c;平台抽佣商家独立结算&#xff…...

Linux中断

文章目录 前言一、Linux 中断介绍二、中断上文和中断下文三、中断相关函数1 获取中断号相关函数2.申请中断3.释放中断4.中断处理函数四.中断下文之 tasklet1.概念2.Linux 内核中的 tasklet 结构体:3.使用步骤4.相关函数a.初始化 tasklet结构体b.调度 taskletc.杀死 tasklet总结…...

Excel+SQL实战项目 - 餐饮业日销售情况分析仪

目录1、要完成的任务2、认识数据3、SQL数据加工4、excel形成分析仪1、要完成的任务 目标&#xff1a;结合SQL和excel实现餐饮业日销售情况分析仪&#xff0c;如下表&#xff1a; 认识分析仪&#xff1a; 切片器&#xff1a;店面 分为四部分&#xff1a;KPI 、组合图、饼图、数…...

电商导购CPS,京东联盟如何跟单实现用户和订单绑定

前言 大家好&#xff0c;我是小悟 做过自媒体的小伙伴都知道&#xff0c;不管是发图文还是发短视频&#xff0c;直播也好&#xff0c;可以带货。在你的内容里面挂上商品&#xff0c;你自己都不需要囤货&#xff0c;如果用户通过这个商品下单成交了&#xff0c;自媒体平台就会…...

Redis学习【6】之BitMap、HyperLogLog、Geospatial操作命令 (1)

文章目录前言BitMap 操作命令1.1 BitMap 简介1.2 setbit1.3 getbit1.4 bitcount1.5 bitpos[pos:position]1.6 bitop1.7 应用场景二 HyperLogLog 操作命令2.1 HyperLogLog 简介2.2 pfadd2.3 pfcount2.4 pfmerge2.5 应用场景三 Geospatial【地理空间】操作命令3. 1 Geospatial 简…...

JAVA实现心跳检测【长连接】

文章目录1、心跳机制简介2、心跳机制实现方式3、客户端4 、服务端5、代码实现5.1 KeepAlive.java5.2 MyClient.java5.3 MyServer5.4 测试结果1、心跳机制简介 在分布式系统中&#xff0c;分布在不同主机上的节点需要检测其他节点的状态&#xff0c;如服务器节点需要检测从节点…...

python3.9安装和pandas安装踩坑处理

0、先决条件&#xff1a;系统内最好先安装有gcc、libffi-devel等 1、安装包下载 https://www.python.org/downloads/source/ 2、解压安装包并上传到/usr/local/python3.9 3、打开shell cd /usr/local/python3.9要先把python3.9的所有文件复制到/usr/local/python3.9才会成功…...

2023.2.15每日一题——867. 转置矩阵

每日一题题目描述解题核心解法一&#xff1a;二维表示 模拟解法二&#xff1a;一维表示 模拟题目描述 题目链接&#xff1a;867. 转置矩阵 给你一个二维整数数组 matrix&#xff0c; 返回 matrix 的 转置矩阵 。 矩阵的 转置 是指将矩阵的主对角线翻转&#xff0c;交换矩阵…...

【人脸识别】Partial-FC:让你在一台机器上训练1000万个id人脸数据集成为可能!

论文题目&#xff1a;”Killing Two Birds with One Stone: Efficient and Robust Training of Face Recognition CNNs by Partial FC“ -CVPR 2022 代码地址&#xff1a;https://arxiv.org/pdf/2203.15565.pdf 代码地址&#xff1a;https://github.com/deepinsight/insightfac…...

递归方法读取任意深度的 JSON 对象的键值

有以下json字符串 {"name":"John","age":30,"address":{"city":"New York","state":"NY","zip":"10001","coordinates":{"latitude":40.712776,&q…...

黑马redis学习记录:分布式锁

一、基本原理和实现方式对比 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;那么我们就能锁住线程&#xff0c;不让线程进行&#xff0c;让程序串行…...

对React-Fiber的理解,它解决了什么问题?

对React-Fiber的理解&#xff0c;它解决了什么问题&#xff1f;Fiber用来解决什么问题&#xff1f;Fiber是什么&#xff1f;Fiber是如何解决问题的&#xff1f;Fiber用来解决什么问题&#xff1f; JavaScript引擎和页面渲染引擎两个线程是互斥的&#xff0c;当其中一个线程执行…...

【Linux】初学Linux你需要掌握这些基本指令(二)

目录 1.man指令 2.cp指令 3.mv指令 4.tree指令 5.echo指令 6.more指令 7.less指令&#xff08;重要&#xff09; 8.head与tail指令 9.date指令 显示时间常用参数&#xff1a; 设置时间常用参数&#xff1a; 10.cal指令 11.find & whereis & which指令 …...

Linux中VI/VIM 编辑器

1、概述所有Linux系统都会内置vi文本编辑器vim是vi的升级版&#xff0c;可以主动以字体颜色分辨语法的正确性&#xff0c;代码补完和编译&#xff0c;错误跳转等功能。2、vi和vim的三种模式基本上 vi/vim 共分为三种模式&#xff0c;分别是一般模式、编辑模式、命令模式2.1、一…...

PDF怎么转换成Word?两种PDF免费转Word方法推荐

不知道你们有没有发现&#xff0c;我们在网上下载的很多资料都是PDF格式的&#xff0c;尽管PDF文件也可以通过专门的PDF编辑器来编辑&#xff0c;但是PDF文档作为版式文档&#xff0c;编辑起来还是存在很多局限性&#xff0c;所有当我们需要大量编辑修改文档的时候&#xff0c;…...

极兔一面:Dockerfile如何优化?注意:千万不要只说减少层数

说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;面试题是一个非常、非常高频的交流话题。 最近&#xff0c;有小伙伴面试极兔时&#xff0c;遇到一个面试题&#xff1a; 如果优化 Dockerfile&#xff1f; 小伙伴没有回答好&#xff0c;只是提到了减少镜像层数。…...

SpringBoot+Vue实现酒店客房管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…...

自适应多因素认证:构建不可破解的企业安全防线|身份云研究院

打开本文意味着你理解信息安全的重要性&#xff0c;并且希望获取行业最佳实践来保护你所在组织的信息安全。本文将带你了解多因素认证&#xff08;MFA&#xff1a;Multi-Factor-Authentication&#xff09;对于企业信息安全的重要性以及实施方法。 多因素认证&#xff08;MFA&…...

阶段二8_集合ArrayList_学生管理系统_详细步骤

一.学生管理系统案例 1.需求&#xff1a; 针对目前我们的所学内容&#xff0c;完成一个综合案例&#xff1a;学生管理系统&#xff01; 该系统主要功能如下&#xff1a; 1.添加学生&#xff1a;通过键盘录入学生信息&#xff0c;添加到集合中 2.删除学生&#xff1a;通过键盘录…...

一篇解决Linux 中的负载高低和 CPU 开销并不完全对应

负载是查看 Linux 服务器运行状态时很常用的一个性能指标。在观察线上服务器运行状况的时候&#xff0c;我们也是经常把负载找出来看一看。在线上请求压力过大的时候&#xff0c;经常是也伴随着负载的飙高。 但是负载的原理你真的理解了吗&#xff1f;我来列举几个问题&#x…...

关于IDM下载器,提示:一个假冒的序列号被用来注册……idea项目文件路径报红

关于IDM下载器&#xff0c;提示&#xff1a;一个假冒的序列号被用来注册……到C:\Windows\System32\drivers\etc 修改目录下面的hosts文件&#xff08;如果没有修改的权限就右键属性hosts文件修改user的权限为完全控制&#xff09;&#xff0c;在hosts里面增加以下内容&#xf…...

JVM - 高效并发

目录 Java内存模型和内存间的交互操作 Java内存模型 内存间的交互操作 内存间交互操作的规则 volatile特性 多线程中的可见性 volatile 指令重排原理和规则 指令重排 指令重排的基本规则 多线程中的有序性 线程安全处理 锁优化 锁优化之自旋锁与自适应自旋 锁优…...

中小学智慧校园电子班牌系统源码 Saas云平台模式

智慧电子班牌区别于传统电子班牌&#xff0c;智慧校园电子班牌系统更加注重老师和学生的沟通交流和及时数据交互。学校为每个教室配置一台智能电子班牌&#xff0c;一般安装于教室门口&#xff0c;用来实时显示学校通知、班级通知&#xff0c;可设置集中分布式管理&#xff0c;…...

记录一次服务器被攻击的经历

突然收到阿里云发过来的异常登陆的信息&#xff1a; 于是&#xff0c;急忙打开电脑查看对应的ECS服务器的记录&#xff1a; 发现服务器的cpu占用率异常飙升&#xff0c;所以可以大概断定服务器已经被非法入侵了。 通过自己的账号登陆后&#xff0c;发现sshd服务有异常的链接存…...

Python解题 - CSDN周赛第29期 - 争抢糖豆

本期问哥是志在必得&#xff0c;这本算法书我已经觊觎许久&#xff0c;而之前两次因为种种原因未能如愿。因此&#xff0c;问哥这几天花了不少时间&#xff0c;把所有之前在每日一练做过的题目重新梳理了一遍。苦心人&#xff0c;天不负&#xff0c;感谢官方大大&#xff01; 第…...

C代码中访问链接脚本中的符号

一、目的在之前的《GNU LD脚本命令语言&#xff08;一&#xff09;》、《GNU LD脚本命令语言&#xff08;二&#xff09;》我们介绍了GNU链接脚本的知识点&#xff0c;基本上对链接脚本中的SECTION、REGION、以及加载地址与执行地址的关系等内容有了一定的了解。本篇主要讲解链…...

wordpress日防问数代码/50篇经典软文100字

外面看起来挺好&#xff0c;可是里面没什么陷儿&#xff0c;没辙&#xff0c;疲了&#xff0c;倦了&#xff0c;觉得累了。怎么攒点字就那么难呢&#xff1f; 转载于:https://www.cnblogs.com/bryanzk/archive/2007/08/07/846078.html...

wordpress图片pin按钮/赵阳竞价培训

网络安全的定义&#xff1a; 网络安全&#xff08;Cyber Security&#xff09;是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而遭受到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;[网络服务](https://baike.bai…...

镇江网站建设推广/正在直播足球比赛

Java如何实现验证码验证功能呢&#xff1f;日常生活中&#xff0c;验证码随处可见&#xff0c;他可以在一定程度上保护账号安全&#xff0c;那么他是怎么实现的呢&#xff1f;Java实现验证码验证功能其实非常简单&#xff1a;用到了一个Graphics类在画板上绘制字母&#xff0c;…...

泉州做网站优化的公司/提高工作效率的句子

. PS的基本设置 工欲善其事&#xff0c;必先利其器 在介绍背景之前&#xff0c;首先需要做好准备工作&#xff1a;安装PS与基本设置 这里就不详细介绍PS的安装了&#xff0c;因为网上一抓一大把&#xff0c;主要介绍PS的基本设置 后面会写几篇专门的PS的文章 2. 背景 backgr…...

怎么做彩票网站的代理/新闻媒体发布平台

要开始我是非常新的自举&#xff0c;但我想要做一些类似于这个例子&#xff1a;text over background image但在一个引导框架内。我曾尝试在导航栏下面的容器内创建一个div&#xff0c;但似乎在背后的文字背后放置了白色背景......您可以在此处看到我的代码&#xff1a;JSFiddl…...

开发动态网站有哪些技术/seo百度首页排名业务

2019独角兽企业重金招聘Python工程师标准>>> WKWebView是iOS8推出的&#xff0c;用来代替UIWebView,解决了UIWebView加载速度慢、占用内存大的问题。 一些特性&#xff1a; 1、高达60fps的滚动刷新率以及内置手势&#xff1b; 2、性能更快&#xff0c;稳定性更强&am…...