C++存储类
auto存储类 声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。 如:auto f=3.14;
register存储类 定义存储在寄存器中而不是 RAM 中的局部变量。
static 存储类 使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
extern存储类
mutable存储类 说明符声明的变量仅可在它在其上创建的线程上访问。
&&与 ||或 !非
C += A 相当于 C = C + A
C -= A 相当于 C = C - A
C *= A 相当于 C = C * A
C /= A 相当于 C = C / A
C %= A 相当于 C = C % A
C <<= 2 等同于 C = C << 2 https://www.cnblogs.com/shrimp-can/p/5145351.html
C >>= 2 等同于 C = C >> 2 c++中的运算符异或^,与&,或|_qq_906638174的博客-CSDN博客_c++异或符号
C &= 2 等同于 C = C & 2 与
C ^= 2 等同于 C = C ^ 2 异或
C |= 2 等同于 C = C | 2 或
sizeofz运算符返回变量的大小
Condition ? X : Y 如果 Condition 为真 ? 则值为 X : 否则值为 Y。
使用逗号运算符是为了把几个表达式放在一起。整个逗号表达式的值为系列中最后一个表达式的值。
.(点)运算符和 ->(箭头)运算符用于引用类、结构和共用体的成员。
下面的代码把值 "zara" 赋给对象 emp 的 first_name 成员:
strcpy(emp.first_name, "zara");
如果 p_emp 是一个指针,指向类型为 Employee 的对象,则要把值 "zara" 赋给对象 emp 的 first_name 成员,需要编写如下代码:
strcpy(p_emp->first_name, "zara");
Cast 强制转换运算符 int(2.2000) 将返回 2
&指针运算符,返回变量的地址 &a; 将给出变量的实际地址
*指针运算符,指向一个变量 *var; 将指向变量 var
c++循坏:
while循环:
while(condition)
{
statement(s);
}
for循坏:
for ( init; condition; increment )
{
statement(s);
}
toupper()函数:将小写字母转换为大写字母
先定义数组 for(数组类型 变量:数组)
do..while循环:
do
{
statement(s);
}while( condition );
嵌套循环:一个或多个循环
循坏控制语句:
break语句:当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。它可用于终止 switch 语句中的一个 case
continue语句: continue 会跳过当前循环中的代码,强迫开始下一次循环。
goto语句:允许把控制无条件转移到同一函数内的被标记的语句。作用是退出深嵌套,消除 goto 会导致一些额外的测试被执行。一个简单的 break 语句在这里不会起到作用,因为它只会使程序退出最内层循环。
goto label;
..
.
label: statement;
label是识别被标记语句的标志符
例如:
#include <iostream>
using namespace std;
int main ()
{
// 局部变量声明
int a = 10;
// do 循环执行
LOOP:do
{
if( a == 15)
{
// 跳过迭代
a = a + 1;
goto LOOP;
}
cout << "a 的值:" << a << endl;
a = a + 1;
}while( a < 20 );
return 0;
}
按 Ctrl + C 键终止一个无限循环。
C++判断:
if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
if...else 语句 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
嵌套 if 语句 您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
switch 语句 一个 switch 语句允许测试一个变量等于多个值时的情况。
嵌套 switch 语句 您可以在一个 switch 语句内使用另一个 switch 语句。
? : 运算符 Exp1 ? Exp2 : Exp3;
? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。
C++函数:
函数声明告诉编译器函数的名称、返回类型和参数。
函数定义提供了函数的实际主体。
C++ 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。
函数还有很多叫法,比如方法、子例程或程序,等等。
定义函数:
return_type function_name( parameter list )
{
body of the function
}
函数声明:
return_type function_name( parameter list );
int max(int, int);这也是有效声明
调用函数:
例如:
#include <iostream>
using namespace std;
// 函数声明
int max(int num1, int num2);
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
int ret;
// 调用函数来获取最大值
ret = max(a, b);
cout << "Max value is : " << ret << endl;
return 0;
}
// 函数返回两个数中较大的那个数
int max(int num1, int num2)
{
// 局部变量声明
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
函数参数:
形式参数:如果函数要使用参数,则必须声明接受参数值的变量
形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。
三种向函数传递参数的方式:
注意!!传值调用:把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数
注意!!指针调用:把参数的地址复制给形式参数,在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
例如:
#include <iostream>
using namespace std;
// 函数声明
void swap(int *x, int *y);
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
/* 调用函数来交换值
* &a 表示指向 a 的指针,即变量 a 的地址
* &b 表示指向 b 的指针,即变量 b 的地址
*/
swap(&a, &b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
引用调用: 把引用的地址复制给形式参数,在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
例如:
#include <iostream>
using namespace std;
// 函数声明
void swap(int &x, int &y);
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
/* 调用函数来交换值 */
swap(a, b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
// 函数定义
void swap(int &x, int &y)
{
int temp;
temp = x; /* 保存地址 x 的值 */
x = y; /* 把 y 赋值给 x */
y = temp; /* 把 x 赋值给 y */
return;
}
参数的默认值:当您定义一个函数,您可以为参数列表中后边的每一个参数指定默认值。当调用函数时,如果实际参数的值留空,则使用这个默认值。调用函数时,如果未传递参数的值,则会使用默认值,如果指定了值,则会忽略默认值,使用传递的值。
Lambda函数与表达式:Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值。
[capture](parameters)->return-type{body}
如:
[](int x,int y){
return x<y;
}
无返回值:[capture](parameters){body} 如:[]{++global_x;}
[](int x, int y) -> int { int z = x + y; return z + x; }
对于[=]或[&]的形式,lambda 表达式可以直接使用 this 指针。但是,对于[]的形式,如果要使用 this 指针,必须显式传入:
[this]() { this->someFunc(); }();