C++学习之路---新手基础篇
参考:https://www.cnblogs.com/coding365/p/12872284.html#IDE_29
一、概述
1、C++是一门古老的语言,C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
2、集成开发工具:Visual Studio (Visual C++)、C++ Builder、kDevelop、Anjuta、Code::Blocks(开放源码的全功能的跨平台C/C++集成开发环境)、 Eclipse CDT;
3、编译器:Dev C++、Ultimate++、Digital Mars、C-Free、MinGW、Tiny C Compiler。我是用的是Code::Blocks和MinGW。
二、构建标准
以下程序是一个标准的c++程序,什么都不干。
#include <iostream> //预处理语句,在#include后面可以调用c++标准库,基础的c++程序定义一个iostream是标准输入输出流
using namespace std; //调用命名空间std内定义的所有标识符
int main() //定义一个函数,int是返回值类型,main() 是函数名,main()是主函数,不可以改名!{}一对大括号括起来的地方就是代码段
{
return 0; //程序结束的地方,叫返回值,返回值的默认值是0,不可以改!
}
三、第一个程序:“Hello World!”
代码段:cout<<"Hello World!"<<endl; //cout是输出到控制台(终端),<<是输出流符号,""这是代表字符串,输出一个hello world的字符串;
//最后endl是回车的意思,输出换行,最后分号;每行都要有
四、C++基础语法
1、C++自身的输入输出风格:
int aNum1;
int aNum2;
cin>>aNum1; //cin是输入标识符,>>是输入流符号
cin>>aNum2;
cout<<"aNum1+aNum2="<<aNum1+aNum2<<endl;
2、c++中也支持C语言的输入与输出:
int aNum;
scanf("%d", &aNum); //scanf是输入,printf是输出,“”双引号内是确定输出格式的语句,","后面就是输出中切入的变量
printf("%d\n", aNum); //“d%”是整型,\n是换行,b = &a;//给指针赋值,使指针指向a的地址
3、变量
(1)全局变量:整个文件可用,通常用来声明常量,定义位置:命名空间(using namespace std;)下面:
#include <iostream>
using namespace std;
int n = 10; //定义全局变量
void out(){
cout << n << endl; //自定义函数,下面讲
//函数中可用
}
int main(){
cout << n << endl;//every where可用
return 0;
}
(2)局部变量
#include <iostream>
using namespace std;
void func(){
cout << n << endl;//报错,找不到n
}
int main(){
int n = 10;
cout << n << endl;
}
3、常量:不能改变的量,用保留字const定义,实例:
#include <iostream>
using namespace std;
const int an = 100;
int main(){
//常量可以定义在任何地方
cout << an << endl;//输出100
const long long int aln = 200;
cout << aln << endl;//输出200
aln = 100;//报错,不可篡改常量
return 0;
}
4、注释:单行注释用//双斜杠表示,多行注释用一对单斜杠+星号/**/实现
5、C++的所有关键字、保留字不可作为变量名、函数名等等,它们是固定的。
6、C++数据类型
(1)整型:存储整数的类型,用整形声明的变量可以存储整数
| 名称 | 所占字节数 | 取值范围 |
|---|---|---|
| short[int] | 2 | -32768~32767 |
| unsigned short[int] | 2 | 0~65535 |
| int | 4 | -2147483648~2147483647 |
| unsigned int | 4 | 0~4294967295 |
| long long | 8 | -263~263-1 |
| unsigned long long | 8 | 0~264-1 |
int main(){
short aNum_short;
int aNum_int;
long long aNum_long;
cin >> aNum_short;
cin >> aNum_int;
cin >> aNum_long;
cout << aNum_short << " " << aNum_int << " " << aNum_long << endl;
return 0;
}
(2)浮点型:存储带小数点(小数)的类型,用浮点型声明的变量可以存储整数,浮点型有几个定义方法:
float单精度浮点数,double双精度浮点数,long double高精度浮点数。
| 精度 | 名称 | 所占字节数 | 取值范围 |
|---|---|---|---|
| 单精度浮点数 | float | 4 | -3.4E+38~3.4E+38(7位有效数字)−3.4E+38 3.4E+38(7位有效数字) |
| 双精度浮点数 | double | 8 | -1.79E+308~1.79E308(15位有效数字)−1.79E+308 1.79E308(15位有效数字) |
| 高精度浮点数 | long double | 12 | 3.4E-4932~1.1E+4932(19位有效数字)3.4E−4932 1.1E+4932(19位有效数字) |
int main(){
float f_float;
double f_double;
long double f_longD;
cin >> f_float >> f_double >> f_longD;
cout << f_float << " " << f_double << " " << f_longD << endl;
return 0;
}
(3)布尔型
bool flag = true;//赋值初始值
cout << int(flag) << endl; //强制类型转换变成int,输出1
flag = false;
cout << int(flag) << endl; //输出0
(4)字符类型:只能存储一个字符,用单引号 ‘ ’ 括起来,c++中的字符类型只支持ASCLL编码。
char ch = 'A';
cout << ch << endl;//输出A、
cout << int(ch) << endl;//输出A的ASCLL码,65
7、C++的运算符:告诉编译器执行特定的数学或逻辑操作的符号。
(1)算术运算符
假设变量 A 的值为 10,变量 B 的值为 20,则:
| 运算符 | 描述 | 实例 |
|---|---|---|
| + | 把两个操作数相加 | A + B 将得到 30 |
| - | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |
| * | 把两个操作数相乘 | A * B 将得到 200 |
| / | 分子除以分母 | B / A 将得到 2 |
| % | 取模运算符,整除后的余数 | B % A 将得到 0 |
| ++ | 自增运算符,整数值增加 1 | A++ 将得到 11 |
| -- | 自减运算符,整数值减少 1 | A-- 将得到 9 |
(2)关系运算符
| 运算符 | 描述 | 实例 |
|---|---|---|
| == | 检查两个操作数的值是否相等,如果相等则条件为真。 | (A == B) 不为真。 |
| != | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (A != B) 为真。 |
| > | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A > B) 不为真。 |
| < | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A < B) 为真。 |
| >= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A >= B) 不为真。 |
| <= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真。 |
(3)逻辑运算符
假设变量 A 的值为 1,变量 B 的值为 0,则:
| 运算符 | 描述 | 实例 |
|---|---|---|
| && | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 | (A && B) 为假。 |
| || | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (A || B) 为真。 |
| ! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | !(A && B) 为真。 |
注:关系运算符和逻辑运算符常通常用于判断语句
五、C++语法提高
1、数组
C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
(1)声明数组:需要指定元素的类型和元素的数量,如下所示:
double balance[10];
(2)初始化数组:可以逐个初始化数组,也可以使用一个初始化语句,如下所示:
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
(3)访问数组元素:可以通过数组名称加索引进行访问。
double salary = balance[9];
2、字符串
字符串用string定义,还要预处理一个库#include<string>,字符串可以用[]访问下标
string str="abcddd";
cout<<str[2]<<endl; //输出c
3、控制语句
(1)循环:for和while
(2)判断:if
for(int i = 0 ; i < n ; i ++){
//寻找[i,n)区间内的最小值
int miniIndex = i ; //存放最小值的索引
for(int j = i + 1 ; j < n ; j ++){
if(arr[j] < arr[miniIndex]){
miniIndex = j;
}
}
swap(arr[i] , arr[miniIndex]); //交换两个元素的位置,swap()是C++最新标准库中的内置函数
}
4、函数:一组一起执行一个任务的语句。
每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。
(1)函数声明:告诉编译器函数的名称、返回类型和参数。
函数定义:提供了函数的实际主体。
(2)函数由一个函数头和一个函数主体组成
return_type function_name( parameter list ) { body of the function }
- 返回类型:return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
- 函数名称:函数的实际名称。函数名和参数列表一起构成了函数签名。
- 参数:占位符。当函数被调用时,向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,函数可能不包含参数。
- 函数主体:包含一组定义函数执行任务的语句。
(3)内置函数:例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。

浙公网安备 33010602011771号