C++学习笔记1

Hello World程序的组成部分
可以分为两部分:
(1)以#开头的是预处理器编译指令
(2)int main() 开头的是程序的主体

预处理编译指令#include
定义:预处理器是一个在编译前运行的工具
#include 是让预处理器获取指定文件(这里指iostream)的内容,并将他们放在比编译指令所处的位置。使用<> 通常用于包含标准头文件,如果是自己创建的头文件,则需要使用" "

名称空间的概念
使用的是std::cout 而不是cout 原因在于cout位于标准std名称空间中。
什么是名称空间?
假设调用cout时没有使用名称空间限定符,且编译器知道cout存在于两个地方,编译器应该调用哪个?所以这会导致冲突的,导致无法编译通过。名称空间是给代码指定的名称,有助于降低命名冲突的风险。
使用cout 和std名称空间中的其他功能时,在代码中添加std限定符很繁琐,为了避免添加该限定符,可使用using namespace xx;


#include<iostream>int main(){
//using namespace std;
/*
*下面的是更加严谨的写法,直接指定使用哪个命名空间的什么方法
*/
using std::endl;
using std::cout;cout << "Hello Jeck" << endl;return 0;
}

C++代码中的注释
// 指出从这里开始到行尾都为注释

/* 和 */ 表示他们之间的文本为注释

C++函数
函数能够将程序划分成多个功能单元,并按照您选择的顺序调用,函数被调用时,通常将一个值返回给调用它的函数。

#include<iostream>
int haha();//函数的声明int main(){
//using namespace std;
/*
*下面的是更加严谨的写法,直接指定使用哪个命名空间的什么方法
*/
using std::endl;
using std::cout;cout << "Hello Jeck" << endl;haha();
return 0;
}int haha(){
std::cout << "你好,哈哈" << std::endl;
return 1;
}

这里注意的是需要有函数的声明,它告诉编译器您要创建一个函数,该函数名为haha(),返回类型为int。正是因为该声明,编译器才会编译int main中的haha()
使用变量和常量
变量是让程序员能够将数据存储一段时间,而常量让程序员定义不允许修改的东西。

1>内存和寻址概述
所有计算机、智能手机以及其他可编程设备都包含微处理器和一定数量的临时存储空间。
这种临时存储器被称为随机存取存储器(RAM)。
可以将RAM当做宿舍里成排 存物柜,每个存物柜都有编号,即地址,要访问特定的内存单元,如内存单元578,需要使用指令要求处理器从这里获取值或将值写入到这里。

2>声明变量以访问和使用内存
变量类型向编译器指出了变量可存储的数据的性质,编译器将为变量预留必要的空间,变量名由程序员选择,它替代了变量值在内存中的存储地址。

3>声明并初始化多个类型相同的变量
int a = 0,b = 0,c = 0;

注意:需要时再声明变量通常是更好的选择,因为这让代码更容易理解,存储在变量中的饿数据被存储在内存中,应用程序终止时,这样的数据将丢失。

4>全局变量
在函数外部而不是内部声明的,则函数main 和 函数都可以使用他们。他们是程序中作用域最大的变量,

5>命名约定
变量名,采用骆驼拼写法 firstNumber
函数采用Pascal拼写法 MultiplyNumbers()

6>变量类型
bool 布尔值true/false
bool deleteFile = (haha == “yes”);

char 变量存储字符
char a = ‘Y’;

有符号整数和无符号整数的概念
符号表示正或负,在计算机中使用的所有数字都以位和字节的方式存储在内存中
1字节的内存单元包含8位,每位都要么为0,要么为1.
无符号整型变量不能包含符号信息,因此,他们的最大取值为相应有符号类型的两倍。

选择正确的数据类型以免发生溢出错误
如short ,int ,long,unsigned short ,unsigned int ,unsigned long等数据类型的容量有限,如果算术运算的结果超出了选定数据类型的上限,将导致溢出。

7>使用sizeof确定变量的长度
变量长度指的是程序声明变量时,编译器将预留多少内存,用于存储给该变量的数据。
要确定int变量的长度,可以调用sizeof并给它传递参数int

cout << "int size is :" << sizeof(int) << endl;

8>使用auto 自动推断类型

auto a = true;

9>使用typedef 替换变量类型
C++允许将变量类型替换为您认为方便的名称,为此可以使用typedef

typedef int HAHA;
HAHA number = 10;
std :: cout << "number :" << number << std::endl;

10>常量
子面常量
常量可以使用关键字,const 声明的常量
使用关键字constexpr 声明的常量表达式(C++新增)
使用关键字enum 声明的枚举常量
使用#define 定的常量(不推荐)
a:字面常量
std::cout << “Hello world”;
Hello world 就是一个字符串字面常量

b:使用const 将变量声明为常量

const int finalNumber = 15;
std::cout << "a :" << finalNumber << std::endl;
finalNumber = 11;//对常量进行修改

error: assignment of read-only variable ‘finalNumber’

c:使用enum枚举

//枚举
enum CardinalDirections
{
North = 25,
South,
East,
West
};
std::cout << "North :" << South << std::endl; //26

注意:编译器将枚举量转换成整数,每个枚举量都比之前的大1,如果没有指定起始值,那么认为从0开始

管理数组和字符串

1>什么是数组
数组是一系列元素
数组中所有元素的类型都相同
这组元素形成了一个完整的集合

2>声明和初始化静态数组
语法:
ElementType ArrayName [number] = {元素};
比如:int a[5] = {0,1,2,3,4};
int b[5] = {};//将所有元素都初始化为0
int c[5]= {1,2};//也可以初始化部分元素
int d[] = {1,2,5,6,7};//如果知道数组中每个元素得初始值,可不指定数组包含得元素数

3>数组中的数据是如何存储的
数组索引从0开始而不是1开始的
4>访问存储在数组中的数据
要访问数据中的元素,可使用从零开始的索引。访问数组时,如果超越其边界,结果将是无法预料的,在很多情况下,这将导致程序崩溃。

5>修改存储在数组中的数据

void array(){
int array[5] = {1,8,9,5,6};
//获取数组所占的内存: sizeof(array)
//获取数组中第一个元素所占的内存 : sizeof(array[0])
//获取数组的长度 : sizeof(array)/sizeof(array[0])
//查看数组中的数据
for(int i = 0;i< sizeof(array)/sizeof(array[0]);i++){
std::cout << "array[" << i << "] = " << array[i] << std::endl; 
}
}

6>声明和初始化多维数组
要声明多维数组,可以指定每维包含的元素数
int a[2][3] = {{1,2,3},{7,8,9}};
虽然C++能够模拟多维数组,但存储数组的内存是一维的。如果你愿意也像下面那样初始化多维数组

int arrays[2][3] = {{1,2,3},{7,8,9}};
std::cout << "arrays[1][0] :" << arrays[1][0] << std::endl;
int as[2][3] = {1,2,3,7,8,9};
std::cout << "as[1][0] :" << as[1][0] << std::endl;

输出:

arrays[1][0] :7
as[1][0] :7

7>动态数组
C++提供了std::vector,这是一种方便而易于使用的动态数组
需要引用#include

8>C风格字符串
C风格字符串是一种特殊的字符数组

void sayHello(){
using namespace std;
cout << "Hello world" << endl;
char sayHello[] = {'H','e','l','l','o',' ','w','o','r','l','d','\0'};
cout << sayHello << endl;
}

使用表达式、语句和运算符
1>语句
在C++中,所有语句都以分号;结尾,分号界定了语句的边界。

2>复合语句(语句块)
可以使用花括{} 将多条语句组合在一起,以创建复合语句

{
int daysInYear = 364;
cout << “” << endl;
}

语句块通常将众多语句组合在一起,指出他们属于同一条语句,编写if语句或者循环时,语句块特别有用。

3>赋值运算符(=) int a = 12;
4>加法运算(+)、减法运算(-)、乘法运算(*)、除法运算(/)和求模运算符(%)

除法运算(/):返回两个数相除的结果
求模运算(%):返回除法运算的余数,也只能用于整数

int count(){
using namespace std;
int number1 = 12;
int number2 = 25;cout << "两数之和 = " << number1 + number2 << endl;
cout << "两数之积 = " << number1 * number2 << endl;
cout << "两数之差 = " << number1 - number2 << endl;
cout << "两数之余 = " << number1 % number2 << endl;
cout << "两数相除 = " << number1 / number2 << endl;
}

结果:

两数之和 = 37
两数之积 = 300
两数之差 = -13
两数之余 = 12
两数相除 = 0

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

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

相关文章

java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

linux shell脚本操作日期记录

最近碰到个需求&#xff0c;按日导出每日的数据&#xff0c;然后导入另一个数据库。需要写个日期相关的脚本。这里总结下 #!/bin/bashfunction dateFunc(){echo "从${2}到${3}" nextdate -d "$2" %sstart${2}e…

mysql取24小时数据

MySQL是一种常用的关系型数据库管理系统。在进行实时数据处理时&#xff0c;我们常常需要查询最近24小时的数据来进行分析和处理。下面我们将介绍如何使用MySQL查询最近24小时的数据。 SELECT * FROM table_name WHERE timestamp_column > DATE_SUB(NOW(), INTERVAL 24 HOU…

cocos creator Richtext点击事件

组件如图 添加ts自定义脚本&#xff0c;定义onClickFunc点击方法&#xff1a; import { Component, _decorator} from "cc";const { ccclass } _decorator; ccclass(RichTextComponent) export class RichTextComponent extends Component{public onClickFunc(even…

二十七、数据可视化

一、数据可视化是什么 借助图形来清晰有效表达信息的方式成为可视化&#xff0c;可视化可以帮助我们更好地传递信息。 二、数据可视化的基本流程 1、整理数据 数据可视化的基础还是数据&#xff0c;要将数据图表化&#xff0c;首先要整理数据&#xff0c;明确要把哪些数据图…

ffmpeg分离左右声道到多音轨

早期的视频文件将多语言放在了左右声道&#xff0c;手机上播放时&#xff0c;很多播放器并没有切换声道的功能&#xff0c;所以需要做分离 导出单声道视频 ffmpeg -i 01.rmvb -c:v h264 -af pan"stereo| c0FR | c1FR" -acodec aac 01.mp4 这里的FR是右声道&#x…

C++入门学习(2)

思维导图&#xff1a; 一&#xff0c;缺省参数 如何理解缺省参数呢&#xff1f;简单来说&#xff0c;缺省参数就是一个会找备胎的参数&#xff01;为什么这样子说呢&#xff1f;来看一个缺省参数就知道了&#xff01;代码如下&#xff1a; #include<iostream> using std…

【个人笔记】linux命令之ls

目录 Linux中一切皆文件ls命令常用参数常用命令lscpu lspci Linux中一切皆文件 理解参考&#xff1a;为什么说&#xff1a;Linux中一切皆文件&#xff1f; ls命令 ls&#xff08;英文全拼&#xff1a; list directory contents&#xff09;命令用于显示指定工作目录下之内容…

实现大文件传输的几种方法,并实现不同电脑间大文件传输

随着网络技术的快速发展&#xff0c;大文件的传输需求越来越多&#xff0c;如何在不同的电脑之间实现大文件的快速传输&#xff0c;是一个挑战&#xff0c;下面介绍几种常用的方法可以解决这个问题。 1、利用局域网传输&#xff1a;把两台电脑接入同一个网络环境&#xff0c;通…

每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户

文章目录 每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户每日语录第26题 中级题: 活跃时长的均值1. 需求列表思路分析 答案获取加技术群讨论附表文末SQL小技巧 后记 每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户 大家好&#xff0c;我是Maynor。…

【Android 】Prebuilt预编译

Android提供了Perbuilt编译方式&#xff0c;处理已经编译好的库或配置文件 Perbuilt:针对独立文件的操作。 Multi_Perbuilt:针对多个文件&#xff0c;对多个文件进行判断&#xff0c;调用Prebuilt依次处理。 上面的就是copy usb_modeswitch.conf 文件到 OUT 下面的 etc目录&am…

AtCoder Beginner Contest 310-D - Peaceful Teams(DFS)

Problem Statement There are N sports players. Among them, there are M incompatible pairs. The i-th incompatible pair (1≤i≤M) is the Ai​-th and Bi​-th players. You will divide the players into T teams. Every player must belong to exactly one team, an…

Neo4j开发

原生API 待补充。。。 SpringBoot整合Neo4j 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-Neo4j</artifactId> </dependency> 配置 spring:data:neo4j:uri: bolt://127.0.0.1…

Web3.0:重新定义数字资产的所有权和交易方式

随着区块链技术的发展和应用&#xff0c;数字资产的概念已经逐渐深入人心。数字资产不仅包括加密货币&#xff0c;还包括数字艺术品、虚拟土地、游戏道具等各种形式的数字物品。然而&#xff0c;在传统的互联网环境下&#xff0c;数字资产的所有权和交易方式往往受到限制和约束…

SQL中为何时常见到 where 1=1?

你是否曾在 SELECT 查询中看到过 WHERE 11 条件。我在许多不同的查询和许多 SQL 引擎中都有看过。这条件显然意味着 WHERE TRUE&#xff0c;所以它只是返回与没有 WHERE 子句时相同的查询结果。此外&#xff0c;由于查询优化器几乎肯定会删除它&#xff0c;因此对查询执行时间没…

猿创征文|一文带你了解前端开发者工具

前端开发者工具目录 一、前言二、前端开发者工具——编译器&#xff08;含插件&#xff09;1、VS Code2、VS Code 必备插件3、WebStorm 三、前端开发者工具——UI 框架工具1、Element2、Vant 四、前端开发者工具——API 调试工具1、ApiPost 五、写在最后&#xff08;总结&#…

微服务sleuth+zipkin---链路追踪+nacos配置中心

目录 1.分布式链路追踪 1.1.链路追踪Sleuth介绍 1.2.如何完成sleuth 1.3.zipkin服务器 2.配置中心 2.1.常见配置中心组件 2.2.微服务集群共享一个配置文件 2.2.1实时刷新--配置中心数据 2.2.2.手动写一个实时刷新的配置类 ----刷新配置文件 2.3.多个微服务公用一个配…

【最新教程】树莓派安装系统及VNC远程桌面连接

大家好&#xff0c;今天就不给大家介绍PYTHONL ,今天我作为一个刚入坑树莓派的小白&#xff0c;整理了一下自己安装树莓派的整个过程&#xff0c;分享给大家。 目录 树莓派 准备工作&#xff1a; 树莓派远程ssh失败access denied 原因&#xff1a; 树莓派系统安装 1、下载…

初识C++(上)——“C++”

各位CSDN的uu们你们好呀&#xff0c;小雅兰的全新专栏又来啦&#xff0c;这次的专栏主要介绍的是C&#xff0c;下面&#xff0c;让我们进入C的世界吧&#xff01;&#xff01;&#xff01; 什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的…

vue---自定义指令

局部自定义指令 <div idapp>原数据: <span v-text"num"></span>放大十倍的数据<span v-big"num"></span></div><script>const app new Vue({el: #app,data: {num: 1},directives: {big: {bind(el, binding) {c…