自学C++

Posted 喵喵喵爱吃鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自学C++相关的知识,希望对你有一定的参考价值。

关于本课程

hi,欢迎来到这次的课程,接下来我会给大家介绍C++语言基础,这套课程特别适合自学C++的小白。每节课程最后还有一道练习题,边学边练,可以帮你及时巩固学习到的知识。

如果您在学习其他相关的C++课程或已经在工作中展开了C++实践,也可以学习该课程用来巩固知识点。

本教程中的练习题,请移步 1024乐学编程-C++基础  进行练习。

您也可以在该网站免费学习到更多课程

C++ 简介

C++ 是一种中级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。
C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

面向对象程序设计

C++ 完全支持面向对象的程序设计,包括面向对象开发的四大特性:封装、抽象、继承、多态
标准的 C++ 由三个重要部分组成:
1.核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。
2.C++ 标准库,提供了大量的函数,用于操作文件、字符串等。
3.标准模板库(STL),提供了大量的方法,用于操作数据结构等。

C++ 的使用

然后再说说C++的使用。
基本上每个应用程序领域的程序员都有使用 C++。
C++ 通常用于编写设备驱动程序和其他要求实时性的直接操作硬件的软件,并广泛用于教学和研究。
任何一个使用苹果电脑或 Windows PC 机的用户都在间接地使用 C++,因为这些系统的主要用户接口是使用 C++ 编写的。

C++ 程序结构

让我们看一段简单的代码,可以输出单词 Hello World

#include <iostream>
using namespace std;
int main()
{
   cout << "Hello,World" << endl; // 输出 Hello,World
   return 0;
};

这段代码,“麻雀虽小,五脏俱全”。他展现了一个完整C++代码的结构。

我逐行给你讲解一下。<iostream>是一个用于 输入输出流 的库。如果我们的程序需要输入、输出的功能,就要通过include预处理指令把这个库包含进来。
iostream 助记:
— in 的首字母,代表输入。
— out 的首字母,代表输出。
stream — “水流、溪流”的意思。
C++把输入、输出看作一条连续的水流。以后我们会逐步介绍。

这里的using是英文单词“用”的意思, namespacestd表示我们要用到一个命名空间std
name — “名称、命名”的意思。
space — “空间”的意思。
std — 是 standard (标准)的缩写。

之后这块是程序的入口——主函数(main是“主要”的意思)程序都会从这里开始运行。每个程序都必须且只能有一个main函数!

int main()
{
   return 0;
};
注意:不要把main写成mian哦, C++可一点都不面!

最后的return 0;是程序的返回语句(return就是“回来、返回”的意思) ,汇报一下程序的执行情况。返回0代表一切正常,如果返回其他值,可能就代表不同的意思。

最重要的有效代码就是: cout<<"Hello, world"<<endl;
cout 是用于输出的一个“工具” ,将希望计算机输出的内容用英文双引号""包裹起来,放在 cout 后的 << 之后。后面还有一个 << 符号,紧跟的 endl 代表换行,另起一行的意思。endl 助记: end 是“结束” , l 是 line (直线,-行) 的首字母。
C++中每一个语句的最后都是一个分号;代码在分号后要养成换行的习惯。
cout 语句的一般格式: cout << 输出项1 << 输出项2 <<...<< endl;
(1)如果输出项加英文双引号"",则原样输出引号内的内容;
(2)如果输出项是表达式,则输出表达式的结果。

C++ 中的空格

说说空格的使用,只包含空格的行,被称为空白行,可能带有注释,C++ 编译器会完全忽略它。
在 C++ 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。因此,在下面的语句中:

int age;

在这里,int 和 age 之间必须至少有一个空格字符(通常是一个空白符),这样编译器才能够区分它们。另一方面,在下面的语句中:

fruit = apples + oranges;   // 获取水果的总数

fruit 和 =,或者 = 和 apples 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。

C++ 中的分号

在 C++ 中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
例如,下面是三个不同的语句:

x = y;
y = y+1;
add(x, y);

语句块

然后我们讲解一下语句块, 语句块是一组使用大括号括起来的按逻辑连接的语句。例如:

{
   cout << "Hello World"; // 输出 Hello World
   return 0;
}

C++ 不以行末作为结束符的标识,因此,您可以在一行上放置多个语句。例如:

x = y;
y = y+1;
add(x, y);

等同于

x = y; y = y+1; add(x, y);

注释

最后来说说注释的使用,行内注释:以 // 开头,行内位于其后的内容全部为注释。参考上面语句块中的 // 输出 Hello World
注释块:以 /* 开头,*/ 结尾,中间的内容全部为注释,可以跨行。
注释对程序运行没有影响,可以用来解释程序的意思,还可以在让某段代码不执行(但是依然保留在源文件里)。
在工程开发中,注释可以便于日后维护、他人阅读。

好,接下来我们做一道练习题,请移步到该网站的 《C++ 基本语法》课程中,习题在内容最后。

http://www.eluzhu.com:1818/my/course/71

C++ 数据类型

再来我们讲讲C++的数据类型和变量。
使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当你创建一个变量时,就会在内存中保留一些空间。
您可能需要存储各种数据类型的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。

基本的内置类型

C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了几种基本的 C++ 数据类型:

类型关键字
布尔型bool
字符型char
整型int
浮点型float
双浮点型double
无类型void

布尔类型
一个 bool 类型的变量取值只可能为两种:true 和 false。
一般情况下,一个 bool 类型变量占有1字节(一般情况下,1字节 = 8位)的空间。

字符型
char 类型的变量用于存放字符(实际上存储的仍然是整数,一般通过 ASCII 编码 实现字符与整数的一一对应)。char 的位数一般为8位。
一般情况下,char 的表示范围在-128 ~ 127之间。

整型
int 类型的变量用于存储整数。
现在的绝大多数平台,int 的位数为32位。

单精度浮点型
float和double用来存放小数
float 类型为单精度浮点类型。一般为32位。
其表示范围在 -3.4E+38 ~ 3.4E+38 之间
因为 float 类型表示范围较小,且精度不高,实际应用中常使用 double 类型(双精度浮点型)表示浮点数。

双精度浮点型
double 类型为双精度浮点型。一般为64位。
其表示范围在 -1.7E-308~1.7E+308 之间。

无类型
void 类型为无类型,与上面几种类型不同的是,不能将一个变量声明为 void 类型。但是函数的返回值允许为 void 类型,表示该函数无返回值。

变量

变量其实只不过是程序可操作的存储区的名称。C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C++ 是大小写敏感的。
变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。

变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:

type variable_list;

在这里,type 必须是一个有效的 C++ 数据类型,可以是 char、int、float、double、bool 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明:

int    i, j, k;
char   c, ch;
float  f, salary:
double d;

第一行 int i, j, k; 声明并定义了变量 i、j 和 k,这指示编译器创建类型为 int 的名为 i、j、k 的变量。

变量可以在声明的时候被初始化(指定一个初始值)。初始化器由一个等号,后跟一个常量表达式组成,下面列举几个实例:

extern int d = 3, f = 5; // d 和 f 的声明 
int d = 3, f = 5; // 定义并初始化 d 和 f
byte z = 22; // 定义并初始化 z
char x = 'x'; // 变量 x 的值为 'x' 

不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。

接下来我们做一道练习题,请移步到该网站的 《变量》课程中,习题在内容中部。

http://www.eluzhu.com:1818/my/course/71

C++ 中的变量定义

接下来我们为您说说变量声明。变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。

#include <iostream>
using namespace std;

int main() {
 int number;
    number = 2;
    cout << number << endl;
}

在 main 函数的开始位置写下 int number;
这条语句声明了一个整数类型( int 是整数的英文单词“ integer ”的缩写)的变量 number。

如果不声明,直接 cout << number << endl; 会怎么样呢?
程序会报错并告诉你 number 没有被声明。你可以自己动手测试一下。

接下来,我们要学习一个符号:“ = ”。请注意,我们在这里不叫它“等于号”,而叫它“赋值运算符”。

赋值运算符的作用,是将它右侧的一个值或者表达式,赋值给左侧的一个变量。

如 int 声明语句之后的 number = 2; //将2赋值给number

我们声明了一个整数类型变量的变量number,并给它赋值2。那么如何知道它里面存储的值是不是我们刚刚通过赋值运算符放进去的值( 整数2 )呢?接下来,让我们输出一下 number 的值,看一看究竟。

在之后一行写下: cout << number << endl; (请注意,让我们养成在cout输出语句之后加上 endl 进行换行的习惯。)
执行代码后,输出的结果为 2 。

通过刚才的几行代码,我们完成了下面所示的一个过程:

C++ 中的左值和右值

左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。
变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句:

int g = 20;

但是下面这个就不是一个有效的语句,会生成编译时错误:

10 = 20;

最后我们做一道练习题,请移步到该网站的 《变量》课程中,习题在内容最后。

http://www.eluzhu.com:1818/my/course/71

好,我们这次先讲到这里,请进入作者主页继续学习后续的C++课程。或进入上面的地址免费学习完整的C++课程。

以上是关于自学C++的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段 C++ 的说明

C++ 代码片段执行

此 Canon SDK C++ 代码片段的等效 C# 代码是啥?

C++ 代码片段(积累)

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

什么是在 C++ 中获取总内核数量的跨平台代码片段? [复制]