C++入门级基础知识汇总
知识来源:https://www.imooc.com/learn/1304
https://www.runoob.com/cplusplus/cpp-tutorial.html
编程第一步导入头文件:
#include <stdio.h> std=standard io= into out #include <iostream>
编程第二步,写主函数:
int main(int argc,char **argv)
{
//argc表示参数个数,argv表示参数组,一起表示该程序的启动参数
}
输入:
scanf("%d", &a); std::cin>>a>>b; //scanf函数会提前设定读取类型,而cin则不需要,更加灵活
输出:
printf("a: %d, b: %d", a, b); std::cout<<’字符串’<<a<<std::endl; //printf中需要提前设定好“”中的格式化内容和后面的参数,而cout则不需要,只需要将要输出的内容使用<<连接起来即可
C++基础数据类型

char的大小==unsigned char
long long >= long >= int >= short >= char
格式转化:
- 显示格式转换
int a;
short b = (short)a; //以大转小时必须采用显示转化来告诉计算机我们默许数据丢失
- 隐式格式转化
short a = 100;
int b = a; //当以小转大时我们可以直接使用隐式转化也不会报错,因为不会丢失精度

C++结构体:
类似于面向对象编程中的类

C++枚举类型

指针:
没有指向的指针称为野指针,对野指针进行操作是十分危险的,因为若野指针指向的数据正是别的程序的关键数据,则会造成不可逆转的影响,若在操作系统中,这样操作野指针的操作则会直接导致程序被杀死,故我们需要事先将野指针赋为空指针。
指针赋空的三种操作
*p = nullptr;
*p = NULL; //NULL = 0 但nullptr是新版指针专属的null,更新更有规格
*p = 0;
指针操作详解:
int a,b = 3,4;
int *i = &a; // 定义一个指针变量,让其值等于a的地址
int *j;
j = &b; //但在定义之后再对指针赋指针值则不能使用‘*j’,因为此时 *j已经代表实际指针指向的数据块,我们不能对实际的代码块赋值指针。进行输出时,*j等同于b,j等同于&b
指针实际案例1:通过指针交换两个变量的内容
#include <stdio.h>
void change(int *a, int *b) {
int c = *a;
*a = *b;
*b = c;
}
int main(int argc, char** argv)
{
int a = 3;
int b = 4;
change(&a, &b);
printf("a:%d,b:%d", a, b);
}
C++存储变量的方式:
- 普通声明的变量采用栈进行存储,当{}作用域结束时变量将会自动释放
- 使用malloc()声明时,将采用堆存放,只有当使用free()时才会手动释放
C++数组:
数组名是指向数组中第一个元素的指针

且是一个特殊的常量指针,不可以修改,但可以使用来访问

在一个指针连续声明的空间中,我们也可以用数组的方式去访问指针空间中的数据。




C++判断if和else if
#include <stdio.h>
enum Week
{
Mon, // 星期一
Fri, // 星期五
Sat, // 星期六
Sun, // 星期日
};
int main(int argc,char **argv)
{
Week week = Week::Fri;
if(week == Week::Mon) {
printf("Mon\n");
}
else if(week == Week::Fri) {
printf("Fri\n");
}
else if(week == Week::Sat) {
printf("Sat\n");
}
else{
printf("Sun\n");
}
return 0;
}
Switch case和default、break
#include <stdio.h>
int main(int argc,char **argv)
{
int s = 5;
switch (s) {
case 1:
printf("1\n");
break;
case 2:
printf("2\n");
break;
case 3:
printf("3\n");
break;
case 4:
printf("4\n");
break;
case 5:
printf("5\n");
break;
case 6:
printf("6\n");
break;
default:
printf("unknow\n");
}
return 0;
}
C++的for循环

While循环

For和while的区别

do while:一种对while的补充/一种用于完成和循环无关操作的循环结构。先执行再判断


内联函数inline
函数在调用时会使用栈空间拷贝参数、分配内存,因此会造成额外的内存消耗,因此在一些不必要的地方(调用次数过少)可以使用内联函数,将函数直接翻译进代码块中,不进行额外的函数调用,内联函数以代码膨胀(代码块增大)为代价进行优化。
inline int add(int a, int b)
{
return a + b;
}
int main(int argc,char **argv)
{
int a = 5;
int b = 10;
int c = add(a + b);
return 0;
}
//等价于
int main(int argc,char **argv)
{
int a = 5;
int b = 10;
int c = a + b;
return 0;
}
C++入门级基础知识汇总的更多相关文章
- jquery基础知识汇总
jquery基础知识汇总 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQu ...
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
- Golang 入门系列(三)Go语言基础知识汇总
前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html ...
- Oracle基础知识汇总一
Oracle基础知识 以下内容为本人的学习笔记,如需要转载,请声明原文链接 https://www.cnblogs.com/lyh1024/p/16720759.html oracle工具: SQ ...
- C#基础知识汇总(不断更新中)
------------------------------目录---------------------------- 1.隐式类型2.匿名类型3.自动属性4.初始化器5.委托6.泛型7.泛型委托8 ...
- HTML基础知识汇总
前言 一直想总结一下,苦于没有时间,正好看到了一个总结了不错的博客,我就在他的基础上进行一下测试并总结,原博地址:http://www.cnblogs.com/wanghzh/p/5805587.ht ...
- C#基础知识汇总
过了一遍基础视频,发现有一些最基本的知识点还掌握的不够,汇总如下: 1) 占位符 string name = "张三"; ; decimal salary = 7600.33M; ...
- 5、Makefile基础知识汇总(转自陈皓总述)
一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或多的的目标文件.这是由Makefile ...
- CSS基础知识汇总
前言 原文连接:http://www.cnblogs.com/wanghzh/p/5805678.html 在此基础上又做了大量的扩充 CSS简介 CSS是Cascading Style Sheets ...
- JavaScript基础知识汇总
1. 图片热区: <img src="logo.jpg" usemap="#logo"> <map id="logo" n ...
随机推荐
- Linux内核 自旋锁spin lock,教你如何用自旋锁让ubuntu死锁
背景 由于在多处理器环境中某些资源的有限性,有时需要互斥访问(mutual exclusion),这时候就需要引入锁的概念,只有获取了锁的任务才能够对资源进行访问,由于多线程的核心是CPU的时间分片, ...
- Linux input 子系统详解
1. 模块概述 1.1.相关资料和代码研究 drivers/input/ include/uapi/linux/input-event-codes.h 2. 模块功能 linux核心的输入框架 3. ...
- DMS:直接可微的网络搜索方法,最快仅需单卡10分钟 | ICML 2024
Differentiable Model Scaling(DMS)以直接.完全可微的方式对宽度和深度进行建模,是一种高效且多功能的模型缩放方法.与先前的NAS方法相比具有三个优点:1)DMS在搜索方面 ...
- Postman Code Java-Unirest 代码的依赖
本来是Postman的Code直接使用的,结果根据这个名字 Unirest,搜出来了很多依赖,使用了排名第一的, https://search.maven.org/search?q=Unirest 结 ...
- “java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag”解决方法
在运行jsp项目的时候出现了这个java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag报错,一直尝试更换jar文件等也没 ...
- 五分钟入门Webworker
Webworker是基于HTML5提出的一种技术,允许主线程创建Worker线程,将一些任务分配给Worker运行,主线程运行同时,Worker线程在后台运行,互不干扰.等Worker线程完成计算任务 ...
- 【解题报告】P8478 「GLR-R3」清明
P8478 「GLR-R3」清明 参考了出题人题解和 xcyyyyyy 大神的题解,强推前两篇. 拿到题完全没思路怎么办??? 人类智慧的巅峰,思维量的登峰造极. 换句话说就是非人题目,不过不得不说 ...
- 利用PaddleHub 进行人脸检测识别、并对图片进行抠图
利用PaddleHub 进行人脸检测识别.并对图片进行抠图 本文是利用百度的飞桨平台的paddle进行人脸的检测和抠图,但是里面也有一些小问题,特记录一下笔记,以便以后观看学习. 环境:pytho ...
- Maven高级——分模块开发与设计
分模块开发的意义 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享 分模块开发 创建Maven工程 书写模块代码 注意:分模块开发需要先针对模块功能进行设计,再进行编码.不会先将工 ...
- 填坑 CentOS7 使用 Python3 安装 Cython 编写扩展
前文参见 <CentOS 7 下通过 Cython 编写 python 扩展>, 用的是 Python2.7,本文用的是 Python3.6 yum install python3 pyt ...