知识来源: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

格式转化:

  1. 显示格式转换

int a;

short b = (short)a; //以大转小时必须采用显示转化来告诉计算机我们默许数据丢失

  1. 隐式格式转化

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++存储变量的方式:

  1. 普通声明的变量采用栈进行存储,当{}作用域结束时变量将会自动释放
  2. 使用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++入门级基础知识汇总的更多相关文章

  1. jquery基础知识汇总

    jquery基础知识汇总 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQu ...

  2. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

  3. Golang 入门系列(三)Go语言基础知识汇总

    前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html ...

  4. Oracle基础知识汇总一

    Oracle基础知识 以下内容为本人的学习笔记,如需要转载,请声明原文链接   https://www.cnblogs.com/lyh1024/p/16720759.html oracle工具: SQ ...

  5. C#基础知识汇总(不断更新中)

    ------------------------------目录---------------------------- 1.隐式类型2.匿名类型3.自动属性4.初始化器5.委托6.泛型7.泛型委托8 ...

  6. HTML基础知识汇总

    前言 一直想总结一下,苦于没有时间,正好看到了一个总结了不错的博客,我就在他的基础上进行一下测试并总结,原博地址:http://www.cnblogs.com/wanghzh/p/5805587.ht ...

  7. C#基础知识汇总

    过了一遍基础视频,发现有一些最基本的知识点还掌握的不够,汇总如下: 1) 占位符 string name = "张三"; ; decimal salary = 7600.33M; ...

  8. 5、Makefile基础知识汇总(转自陈皓总述)

    一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或多的的目标文件.这是由Makefile ...

  9. CSS基础知识汇总

    前言 原文连接:http://www.cnblogs.com/wanghzh/p/5805678.html 在此基础上又做了大量的扩充 CSS简介 CSS是Cascading Style Sheets ...

  10. JavaScript基础知识汇总

    1. 图片热区: <img src="logo.jpg" usemap="#logo"> <map id="logo" n ...

随机推荐

  1. div构建table

    1.Css display值与解释-(详细可见CSS手册的CSS display手册)参数:block :块对象的默认值.用该值为对象之后添加新行none :隐藏对象.与visibility属性的hi ...

  2. C# 使用特性的方式封装报文

    在编写上位机软件时,需要经常处理命令拼接与其他设备进行通信,通常对不同的命令封装成不同的方法,扩展稍许麻烦. 本次拟以特性方式实现,以兼顾维护性与扩展性. 思想: 一种命令对应一个类,其类中的各个属性 ...

  3. AT Educational DP Contest

    https://atcoder.jp/contests/dp J - Sushi 设 \(f[i,j,k]\) 表示有 \(1/2/3\) 个寿司的盘子有 \(i/j/k\) 个 考虑随机到哪种盘子列 ...

  4. Java Web中的request,response,重定位与转发的详解

    request与response响应 Web服务器接收到客户端的http请求,其会对每一次的http请求分别创建应该代表请求的request对象,和一个代表响应的response对象. request ...

  5. MFC连接Access2007数据库

    // TODO: 在此添加额外的初始化代码 //初始化ADO环境 if (!AfxOleInit()) { AfxMessageBox(L"OLE初始化失败"); return F ...

  6. Linux 磁盘分区和格式化

    分区 常用命令行工具: fdisk:适用于 MBR 分区表 gdisk:适用于 GPT 分区表 parted:适用于 MBR 和 GPT 分区表,功能更强大.它还有一个 GUI 版本,名为 gpart ...

  7. HttpContext.SignInAsync 失效(表面解决了问题,未深入到.net core 源码去找问题,记录一下,等有时间翻一下.net core 源码试试能不能找到根本原因)

    今天在弄 identityServer4 项目的时候,发现好好的登录竟然没用了. 各种跟踪后发现是 HttpContext.SignInAsync 这个方法不写cookies了 原本经过这个方法后,会 ...

  8. SQL全表扫描优化基础知识

    1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like '%...%'(全模糊)这样的条件,是无法使用索引的,全表扫描自然效率很低:另外,由于匹配算法的 ...

  9. ASP.NET Core C# 反射 & 表达式树 (第二篇)

    前言 上一篇讲到了各种反射的操作方式, 这一篇主要说说如何找到类型. Type Information 在找类型的时候, 除了依据简单的 string 以外, 还会用到很多类型属性来做判断. 比如它是 ...

  10. QT QML实用效果之实现页面切换效果

    简介 本文介绍了如何使用QT QML和JavaScript实现页面动态加载和切换的效果. 文章目录 效果 JavaScript代码:butianyun.js文件 QML代码:主页面 页面A QML代码 ...