深入浅出(C++初学者入门教程指南)

本文概述

  • 前言
  • 第一个C++程序:Hello World
  • C++术语和语法
  • C++编译过程简介
  • 使用cout < < 输出
  • 使用cin> > 作为输入
  • 使用变量:变量是什么?
  • 基本算术操作符
  • While循环语句
  • 条件语句
  • 总结
前言
深入浅出(C++初学者入门教程指南)

文章图片
本系列教程试图详细解读C++,本文首先是C++编程的入门详细指南。鉴于我之前一直都是断断续续学C++的,所以打算用一段时间一次性解决C++的基本问题,虽然不能全部解决,但期望能更加熟悉C++,而在开发中不用浪费过多的时间在C++如语法问题上。
本文使用Visual Studio作为基本编程环境,如果你还没安装,需要预先安装好。
第一个C++程序:Hello World 新建一个源码文件:main.cpp,输入如下内容:
#include < iostream> // 导入头文件, 用于IO操作/** * 第一个C++程序 */ int main(int argc, char **argv) { // 程序入口 std::cout < < "Hello World" < < std::endl; // 输出字符串 return 0; }

然后点击Visual Studio的调试> 开始执行(不调试)即可构建并执行程序,或直接使用快捷键Ctrl+F5。
简短解释:
  • /* …… */和//:分别是多行注释和单行注释,注释不会被执行或解释,仅用于注释源码。
  • #include:这是一个预处理命令,预处理命令以#符号开始,#include< iostream> 表示导入IO操作相关的头文件。预处理命令在编译器预处理阶段被处理,头文件的内容会被替换到当前位置。
  • Int main(){}:C++主函数,程序的主入口。
  • std::cout和std::endl:std是标准模板库的命名空间,每个库有自己独立的命名空间,用于解决符号重复等问题。Cout和endl来自iostream,在std命名空间中,cout是一个标准输出,< < 是一个操作符,用于输出内容到屏幕上,endl是一个换行符。
  • Return 0:函数返回值,主函数默认返回0。
C++术语和语法
  • 语句:语句是程序的最基本动作,语句以分号(; )结束。
  • 预处理指令:以#开始的指令,#include是一个文件包含指令,不是一个语句。
  • 块:以{}括起来的内容为一个块,一个块包含若干的语句,一个块又作为程序的基本单元。Main函数后面跟着的是一个函数块。
  • 注释:多行注释使用/*开始,以*/结束,单行注释以//开始。
  • 空格:空格有利于让代码更整洁。
  • 符号大小写:C++是大小写敏感的,a和A是两个不同的变量。
C++编译过程简介
深入浅出(C++初学者入门教程指南)

文章图片
  • 编写源代码:我们首先编写cpp/cxx源文件和头文件.h,一般在IDE或其它编辑器中编写。
  • 预处理:编译器获取源文件和头文件,对其进行预处理,根据文件中的预处理进行符号替换,替换后的内容为完整的代码。
  • 编译:编译器将预处理后的源文件进行编译,将代码编译为二进制文件,这是一个翻译过程。这些二进制文件一般以.o为.obj作为后缀名。
  • 链接:编译得到的二进制文件还不能直接被执行,编译器需要将当前程序依赖的库链接进来,并最终得到一个可执行文件。
  • 加载和运行:程序在运行之前会被加载到内存中,其中可能加载一些需要的动态库,如windows下的dll文件,linux下的so文件。并最终由CPU执行所有这些指令。
使用cout < < 输出 std是一个命名空间,C++标准库的命名空间是std,一般每个库对于一个命名空间,例如Boost库的命名空间为boost。
另外为什么上面的例子不使用using namespace std呢?建议不要这样用,养成一个习惯:要用什么直接用命名空间指定,因为有可能两个命名空间中都有相同的符号,一来可能出错,而来看代码的人看到头晕。
::是一个域操作符,命名空间定义了一个域,另外类也属于一个域,使用A::B表示访问在A中的B。
< < 是一个操作符(类似函数,只是这个函数使用一个操作符表示了),cout是一个ostream实例对象,cout< < arg,arg是该函数的一个参数,该函数返回cout对象,所以你可以重复使用< < 进行连续输出。这个内容属于运算符重载,就不多说了,后面学到运算符重载你自然就明白了。
使用cout< < 可以在屏幕上输出你想要的内容,目前你可以想到输出的内容包括字符串或数值,需要使用< < 分开输出,例如:
std::cout < < "1 + 4 = " < < (1 + 4) < < std::endl; std::cout < < "La " < < "Oreja" < < " De Van Gogh" < < std::endl;

使用cin> > 作为输入 如果我们需要从命令行中获取用户输入,可以使用cin> > (variable),其中variable是接收输入的变量,例如:
#include < iostream> int main() { std::string name; // 声明字符串变量 int age; // 声明整数变量 std::cout < < "Enter Name: "; // 输出字符串 std::cin > > name; // 获取用户输入 std::cout < < "Enter Age : "; std::cin > > age; std::cout < < "Your Name is: " < < name < < ", age is: " < < age < < std::endl; return 0; }

其中cin> > 也可以连续获取用户输入,例如std::cin> > A> > B,在获取第一个输入后,立即获取第二个输入。
使用变量:变量是什么? 计算机程序用于操作数据,变量用于储存数据,因为我们可以更改这些数据,所以又称为变量。
深入浅出(C++初学者入门教程指南)

文章图片
准确来说,一个变量是一个被标记的存储空间,它储存特定类型的数据。一个变量有一个名称,一个类型和一个值。
  • 变量的名称又称为标识符,例如number,str,my_name,usname等等。变量的名称唯一标识一个变量,我们使用该名称来操作变量的值。
  • C++属于强类型的语言,每个变量都有一个类型,不同类型的变量储存的数据大小是不一样的,例如char类型的变量对应1个字节的空间,而int类型的变量一般对应4个字节的空间。使用什么类型的变量决定了它的数据大小,每次操作变量的字节大小。
  • 变量的值和类型一一对应,一种类型的变量只能储存该类型的值。
  • 访问变量的值可以直接使用变量的名称,还有一种普遍的形式是使用指针,这个后面再说。
要使用变量,你首先要声明变量的名称和类型,下面是变量声明的常见形式:
// 语法:声明指定类型的变量 var-type var-name; // 例子: int sum; double radius; // 语法: 声明同一类型的多个变量 var-type var-name-1, var-name-2,...; // 例子: int sum, difference, product, quotient; double area, circumference; // 语法: 声明一个指定类型的变量,并初始化该变量 var-type var-name = initial-value; // 例子: int sum = 0; double pi = 3.14159265; // 语法: 声明多个变量,并同时初始化变量 var-type var-name-1 = initial-value-1, var-name-2 = initial-value-2,... ; // 例子: int firstNumber = 1, secondNumber = 2;

基本算术操作符
操作符 解释 例子
+ 加法 x + y
- 减法 x - y
* 乘法 x * y
/ 除法 x / y
% 取模 (余数) x % y
++ 递增1 ++x  or  x++
-- 递减1 --x  or  x--
例子如下:
#include < iostream> using namespace std; int main() { int number1, number2; // 定义两个整型变量number1 and number2 int sum, difference, product, quotient, remainder; // 定义5个int型变量 // 提示用户输入两个整数 cout < < "输入两个整数 (使用空白分隔): "; cin > > number1 > > number2; // 算术操作 sum = number1 + number2; difference = number1 - number2; product = number1 * number2; quotient = number1 / number2; remainder = number1 % number2; cout < < "和, 差, 积, 商, 余数 " < < number1 < < " => " < < number2 < < " " < < sum < < ", " < < difference < < ", " < < product < < ", " < < quotient < < ", " < < remainder < < endl; // 递增和递减 ++number1; // 相当于"number1 = number1 + 1" --number2; // 相当于"number2 = number2 - 1" cout < < "number1 递增后 " < < number1 < < endl; cout < < "number2 递减后 " < < number2 < < endl; quotient = number1 / number2; cout < < "新余数(模) " < < quotient < < endl; return 0; }

While循环语句 While循环语法如下:
初始化语句; while (test) { loop-body; } 下一个语句;

While循环语句例子如下:
#include < iostream> int main(int argc, char **argv) { int count = 0; int i = 0; while (i < 100) { count += i; i++; } std::cout < < "1 + 2 + 3 + ... + 99 = " < < count < < std::endl; return 0; }

条件语句 条件语句使用比较运算符,包括:
操作符 解释 例子
== 等于 x == y
!= 不等于 x != y
> 大于 x > y
> = 大于或等于 x > = y
< 小于 x < y
< = 小于或等于 x < = y
另外使用到的逻辑操作符如下:
操作符 解释 例子
& & 逻辑与 (x > = 1) & & (x < = 100)
|| 逻辑或 (x < 1) || (x > 100)
! 逻辑非 !(x == 8)
条件语句的语法如下:
// if-then if ( test ) { true-body; } // if-then-else if ( test ) { true-body; } else { false-body; }

下面是条件语句的语法:
/* * 把奇数和偶数从1加到一个上界 */ #include < iostream> using namespace std; int main() { int sumOdd= 0; // 初始化为0 int sumEven = 0; // 初始化为0 int upperbound; // 从1到这个上界求和 // 输入上界 cout < < "Enter the upperbound: "; cin > > upperbound; // 使用循环重复地加1,2,3,…,直到上界 int number = 1; while (number < = upperbound) { if (number % 2 == 0) {// 偶数 sumEven = sumEven + number; } else {// 奇数 sumOdd = sumOdd + number; } ++number; // 递增 } // 打印 cout < < "The sum of odd numbers is " < < sumOdd < < endl; cout < < "The sum of even numbers is " < < sumEven < < endl; cout < < "The difference is " < < (sumOdd - sumEven) < < endl; return 0; }

下面是使用逻辑操作符的例子:
// 如果x在0到100(包含100)之间返回true (x > = 0) & & (x < = 100)// AND (& & )// 如果x在0和100(包括)之外则返回true (x < 0) || (x > 100)// OR (||) !((x > = 0) & & (x < = 100))// NOT (!), AND (& & ) ((year % 4 == 0) & & (year % 100 != 0)) || (year % 400 == 0)

总结 【深入浅出(C++初学者入门教程指南)】好吧,内容不算多。可能是我之前写过很多语言关于编程基础的文章,特别是关于变量、语句、循环、条件、函数、操作符等等,大概是写了很多了,本文有点不耐烦,所以提前结束了。

    推荐阅读