C++循环
循环类型
循环控制语句
while循环
while(condition)
{
statements;
}
for循环
for(init;condition;increment)
{
statements;
}
do…while循环
do
{
statements;
}while(conditions);
C++判断语句
if(condition)
{
statements;
}
if(condition)
{
statements;
}
else
{
statements;
}
switch(expression)
{
case condition1 :
statements;
case condition2 :
statements;
break
default :
statements;
}
? : 运算符
Exp1 ? Exp2 : Exp3;
C++函数
每个c++程序至少有一个函数,即主函数main()
函数声明告诉编辑器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。
return_type function_name(parameter list)
{
body of the function
}
函数由一个函数头和一个函数主体组成,函数的所有组成部分:
- 返回类型:一个函数可以返回一个值。 return_type是函数返回的值的数据类型。 当函数不需要返回值时,return_type是关键字 void
- 函数名称: 函数的实际名称。 函数名和参数列表一起构成了函数签名
- 参数: 参数是占位符。当函数被调用时,向参数传递一个值,这个值为实际参数。 参数列表包括函数参数的类型,顺序,数量。函数可以没有任何参数。参数定义时 类型是必需的。
- 函数主体: 函数主体包含一组定义函数执行任务的语句。
函数声明
函数声明会告诉编辑器函数名称以及如何调用函数。函数的实际主体可以单独定义。
函数参数
lambda函数表达式
// 有返回值
[capture](parameters)->return-type{body}
// 无返回值
[capture](parameters){body}
// 返回值类型被明确
[](int x, int y) -> int { int z = x + y; return z + x; }
c++数学运算
需要导入头文件
#include <iostream>
#include <cmath>
using namespace std;
double cos(double); //返回弧度角的余弦
double sin(double); // 返回弧度角的正弦
double tan(double); // 返回弧度角的正切
double log(double); // 返回参数的自然对数
double pow(double x, double y); //返回x的y次方
double hypot(double x, double y); // 返回两个参数的平方总和的平方根
double sqrt(double); // 返回参数的平方根
int abs(int); // 返回整数的绝对值
double fabs(double); // 返回任意一个浮点数的绝对值
double floor(double); // 返回小于或等于参数的最大整数
c++随机数
两个相关的函数 rand() 和srand()
rand() 函数返回一个伪随机数。
生成随机数之前必须先调用srand()函数,设置种子
c++数组
数组可以存储一个固定大小的相同类型元素的顺序集合。
数组声明时,声明一个数组变量,利用索引进行访问,默认从0开始。
数组是由连续的内存位置构成。
数组声明
指定数组的元素类型和元素数
type arrayName [ arraySize ];
// 如
double balance[10]; # 声明包含10个double型变量的数组
// 初始化数组
double balance[10] = {100.0, 2.0, 3.4, 700.0};
多维数组
type name[size1][size2]...[sizeN];
//如
int threedim[2][2][2]; // 三维数组2*2*2
// 二维数组
type arrayname[x][y]
c++字符串
c++中字符串实际上是使用null字符 \0 终止的一维字符数组。
char site[7] = {'r', 'u', 'n', 'o', 'o', 'b', '\0'};
char site[] = "runoob"
字符串操作函数
strcpy(s1, s2); // 复制字符串s2到字符串s1
strcat(s1, s2); // 连接s2到s1的末尾 连接字符串也可以用+表示
strlen(s); // 返回字符串s的长度
strcmp(s1, s2); // 比较s1和s2是否相同,相同则返回0 s1<s2则返回值小于0 s1>s2则返回值大于0
strchr(s1, ch); // 返回一个指针,指向字符串s1中第一次出现字符ch的位置
strstr(s1, s2); // 返回一个指针,指向字符串s1中字符串s2第一次出现的位置
c++指针
每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号 &运算符访问的地址。
指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址。
所有指针的值的实际数据类型,都是一样的,都是是一个代表内存地址的长十六进制数。不同数据类型的指针之间的唯一不同是指针指向的变量或常量的数据类型不同。
指针变量声明:
type *var-name;
// 如
int *ip; // 整型指针
double *dp; // double型指针
float *fp; // 浮点型指针
char *ch; // 字符型指针
c++ Null指针
赋值为 Null的指针被称为 空指针
Null指针是一个定义在标准库中的值为0的常量
指针的算术运算
指针是一个用数值表示的地址。 对指针进行的四种算术运算: ++、 --、 +、 -
指针每增加一次,则当前位置往后移4个字节。
指针的关系运算符有 ==、<、 >
指针和数组
当数组存储指向int或char或其他数据类型的指针时:
int *ptr[n];
指向指针的指针
指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。
指针的指针就是将指针的地址存放在另一个指针里面。
一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址。
一个指向指针的指针变量声明时, 在变量名前放置两个星号。即int **var;
传递指针给函数
C++ 允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可。
从函数返回指针
C++ 允许您从函数返回指针,您必须声明一个返回指针的函数,
int * function()
{}
C++ 引用
引用与指针的区别:
- 不存在空引用,引用必须连接到一块合法的内存
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化,指针可以在任何时间被初始化。
// 引用
int i = 7;
int& r=i; // 此时的&为引用 即 r是一个初始化为i的整型引用
c++日期和时间
为使用日期和时间相关的函数和结构,需要在导入头文件
与时间相关的四种类型: clock_t、time_t、size_t和tm。
结构类型tm把日期和时间以c结构的形式保存,tm结构的定义为:
struct tm{
int tm_sec; // 秒,正常范围从 0 到 59,但允许至 61
int tm_min; // 分,范围从 0 到 59
int tm_hour; // 小时,范围从 0 到 23
int tm_mday; // 一月中的第几天,范围从 1 到 31
int tm_mon; // 月,范围从 0 到 11
int tm_year; // 自 1900 年起的年数
int tm_wday; // 一周中的第几天,范围从 0 到 6,从星期日算起
int tm_yday; // 一年中的第几天,范围从 0 到 365,从 1 月 1 日算起
int tm_isdst; // 夏令时
}
time_t time(time_t *time); //该函数返回系统的当前日历时间,自 1970 年 1 月 1 日以来经过的秒数。如果系统没有时间,则返回 -1。
char *ctime(const time_t *time); //该返回一个表示当地时间的字符串指针,字符串形式 day month year hours:minutes:seconds year\n\0。
struct tm *localtime(const time_t *time); //该函数返回一个指向表示本地时间的 tm 结构的指针。
clock_t clock(void); // 该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。如果时间不可用,则返回 -1。
char * asctime(const struct tm *time); // 该函数返回一个指向字符串的指针,字符串包含了 time 所指向结构中存储的信息,返回形式为:day month date hours:minutes:seconds year\n\0。
struct tm *gmtime(const time_t *time); // 该函数返回一个指向 time 的指针,time 为 tm 结构,用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。
time_t mktime(struct tm *time); // 该函数返回日历时间,相当于 time 所指向结构中存储的时间。
double difftime(time_t time2, time_t time1); // 该函数返回 time1 和 time2 之间相差的秒数。
size_t strftime();//该函数可用于格式化日期和时间为指定的格式。
c++基本输入输出
c++的I/O操作发生在流中,流是字节序列。当字节流从设备流向内存,即输入操作。当字节流从内存流向设备,即输出操作。
I/O库头文件
文件定义了cin、cout、cerr和clog对象,分别对应标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
文件通过参数化的流操纵器(setw和setprecision),来声明对执行标准化I/O有用的服务
文件为用户控制的文件处理声明服务。