C++ 备忘单

时间:2023年05月16日 阅读:433
以下内容仅是站长或网友个人学习笔记、总结和研究收藏。不保证正确性,因使用而带来的风险与本站无关!
淘客轩-衣食住行外卖生活好助手

提供基本语法和方法的 C++ 快速参考备忘单。          

开始

Hello.cpp

#include <iostream>  
int main() {     
std::cout << "Hello QuickRef\n"; 
    return 0;
}

编译和运行                        

$ g++ hello.cpp -o hello 
$ ./hello Hello QuickRef

变量

int number = 5;      
// Integer float f = 0.95;     
// Floating number double PI = 3.14159;  
// Floating number char yes = 'Y';       
// Character std::string s = "ME"; 
// String (text) bool isRight = true;  
// Boolean  
// Constants const float RATE = 0.8;

int age {25};         
// Since C++11 
std::cout << age;     
// Print 25

原始数据类型

数据类型                                    尺寸                                    范围                                    
int                                      4字节                                    -2 31 ~ 2 31 -1                                    
float                                      4字节                                    不适用                                      
double                                      8 字节                                    不适用                                      
char                                      1 字节                                    -128 ~ 127                                    
bool                                      1 字节                                    true / false
void                                      不适用                                      不适用                                      
wchar_t                                      或 4 个字节                                    1 个宽字符                                    

用户输入

int num;  
std::cout << "Type a number: ";
std::cin >> num;  
std::cout << "You entered " << num;


交换

int a = 5, b = 10, temp; 
temp = a; 
a = b; 
b = temp;  
// Outputs: a=10, b=5 
std::cout << "a=" << a << ", b=" << b;
                     

注释

// A single one line comment in C++  
/* This is a multiple line comment    in C++ */
                     

if 语句

if (a == 10) {     
// do something 
}
                         

请参阅:条件                          

for 循环

for (int i = 0; i < 10; i++) {     
    std::cout << i << "\n"; 
}
                         

请参阅:循环                          

函数

#include <iostream>   
void hello(); 
// Declaring   
int main() {  // main function     
    hello();    
    // Calling 
}  
void hello() { 
 // Defining     
 std::cout << "Hello QuickRef!\n"; 
}
                         

请参阅:函数                          

参考

int i = 1; 
int& ri = i; // ri is a reference to i  
ri = 2; // i is now changed to 2 
std::cout << "i=" << i;  
i = 3;   // i is now changed to 3 
std::cout << "ri=" << ri;
                         

rii引用相同的内存位置。                        

命名空间

#include <iostream> 
namespace ns1 {
    int val(){
        return 5;
    }
} 
int main() {
    std::cout << ns1::val();
}
                         
#include <iostream> 
namespace ns1 {
    int val(){
        return 5;
    }
} 
using namespace ns1; 
using namespace std; 
int main() {     
    cout << val();  
}
                         

命名空间允许名称下的全局标识符                        

C++ 数组

声明

int marks[3]; // Declaration 
marks[0] = 92; 
marks[1] = 97; 
marks[2] = 98;  
// Declare and initialize 
int marks[3] = {92, 97, 98}; 
int marks[]  = {92, 97, 98};  
// With empty members 
int marks[3] = {92, 97}; 
std::cout << marks[2]; 
// Outputs: 0
                     

操作

┌─────┬─────┬─────┬─────┬─────┬─────┐ 
 | 92  | 97  | 98  | 99  | 98  | 94  | 
└─────┴─────┴─────┴─────┴─────┴─────┘    
0     1     2     3     4     5
                         
int marks[6] = {92, 97, 98, 99, 98, 94};  
// Print first element 
std::cout << marks[0];  
// Change 2th element to 99 
marks[1] = 99;  
// Take input from the user 
std::cin >> marks[2];
                     

显示

char ref[5] = {'R', 'e', 'f'};  
// Range based for loop 
for (const int &n : ref) {     
    std::cout << std::string(1, n); 
}  
// Traditional for loop 
for (int i = 0; i < sizeof(ref); ++i) {
    std::cout << ref[i]; 
}
                     

多维数组

     j0   j1   j2   j3   j4   j5    
     ┌────┬────┬────┬────┬────┬────┐ 
     i0 | 1  | 2  | 3  | 4  | 5  | 6  |    
     ├────┼────┼────┼────┼────┼────┤ 
     i1 | 6  | 5  | 4  | 3  | 2  | 1  |    
     └────┴────┴────┴────┴────┴────┘
                         
int x[2][6] = {     {1,2,3,4,5,6}, {6,5,4,3,2,1} }; for (int i = 0; i < 2; ++i) {     for (int j = 0; j < 6; ++j) {         std::cout << x[i][j] << " ";     } } // Outputs: 1 2 3 4 5 6 6 5 4 3 2 1
                     

C++ 条件

if 语句

if (a == 10) {     // do something }
                         
int number = 16;  if (number % 2 == 0) {     std::cout << "even"; } else {     std::cout << "odd"; }  // Outputs: even
                     

Else if 语句

int score = 99; if (score == 100) {     std::cout << "Superb"; } else if (score >= 90) {     std::cout << "Excellent"; } else if (score >= 80) {     std::cout << "Very Good"; } else if (score >= 70) {     std::cout << "Good"; } else if (score >= 60)     std::cout << "OK"; else     std::cout << "What?";
                     

运算符

关系运算符

a == b                                      a 等于 b
a != b                                      a 不等于 b
a < b                                      a 小于 b
a > b                                      a 更大 b
a <= b                                      a 小于或等于 b
a >= b                                      a 大于或等于 b

赋值运算符

a += b                                      又名 a = a + b
a -= b                                      又名 a = a - b
a *= b                                      又名 a = a * b
a /= b                                      又名 a = a / b
a %= b                                      又名 a = a % b

逻辑运算符

exp1 && exp2                                      两者都是真的(AND)                                      
exp1 || exp2                                      要么为真(或)                                      
!exp                                      exp是假的(不是)                                      

位运算符

a & b                                      二进制与
a | b                                      二进制或
a ^ b                                      二进制异或
a ~ b                                      二进制补码
a << b                                      二进制左移
a >> b                                      二进制右移

三元运算符

           ┌── True ──┐ Result = Condition ? Exp1 : Exp2;            └───── False ─────┘
                         
int x = 3, y = 5, max; max = (x > y) ? x : y;  // Outputs: 5 std::cout << max << std::endl;
                         
int x = 3, y = 5, max; if (x > y) {     max = x; } else {     max = y; } // Outputs: 5 std::cout << max << std::endl;
                     

Switch 语句

int num = 2; switch (num) {     case 0:         std::cout << "Zero";         break;     case 1:         std::cout << "One";         break;     case 2:         std::cout << "Two";         break;     case 3:         std::cout << "Three";         break;     default:         std::cout << "What?";         break; }
                     

C++ 循环

While

int i = 0; while (i < 6) {     std::cout << i++; }  // Outputs: 012345
                     

Do-while

int i = 1; do {     std::cout << i++; } while (i <= 5);  // Outputs: 12345
                     

Continue 语句

for (int i = 0; i < 10; i++) {     if (i % 2 == 0) {         continue;     }     std::cout << i; } // Outputs: 13579
                     

无限循环

while (true) { // true or 1     std::cout << "infinite loop"; }
                         
for (;;) {     std::cout << "infinite loop"; }
                         
for(int i = 1; i > 0; i++) {     std::cout << "infinite loop"; }
                     

for_each (从 C++11 版本开始)

#include <iostream>  void print(int num) {     std::cout << num << std::endl; }  int main() {     int arr[4] = {1, 2, 3, 4 };     std::for_each(arr, arr + 4, print);     return 0; }
                     

Range-based (从 C++11 版本开始)

int num_array[] = {1, 2, 3, 4, 5}; for (int n : num_array) {     std::cout << n << " "; } // Outputs: 1 2 3 4 5
                         
std::string hello = "QuickRef.ME"; for (char c: hello) {     std::cout << c << " "; } // Outputs: Q u i c k R e f . M E
                     

Break 语句

int password, times = 0; while (password != 1234) {     if (times++ >= 3) {         std::cout << "Locked!\n";         break;     }     std::cout << "Password: ";     std::cin >> password; // input }
                     

几种变体

for (int i = 0, j = 2; i < 3; i++, j--){     std::cout << "i=" << i << ",";     std::cout << "j=" << j << ";"; } // Outputs: i=0,j=2;i=1,j=1;i=2,j=0;
                     

C++ 函数

参数和返回

#include <iostream>  int add(int a, int b) {     return a + b;   }  int main() {     std::cout << add(10, 20);  }
                         

add 是一个接受 2 个整数并返回整数的函数                            
                       

Overloading 超载

void fun(string a, string b) {     std::cout << a + " " + b; } void fun(string a) {     std::cout << a; } void fun(int a) {     std::cout << a; }
                     

内置函数

#include <iostream> #include <cmath> // import library   int main() {     // sqrt() is from cmath     std::cout << sqrt(9); }

C++ 预处理器

Includes 包括

#include "iostream" #include <iostream>
                     

Defines 定义

#define FOO #define FOO "hello"  #undef FOO
                     

If 如果

#ifdef DEBUG   console.log('hi'); #elif defined VERBOSE   ... #else   ... #endif
                     

Error 错误

#if VERSION == 2.0   #error Unsupported   #warning Not really supported #endif
                     

Macro 宏

#define DEG(x) ((x) * 57.29)
                     

Token concat 令牌连接

#define DST(name) name##_s name##_t DST(object);   #=> object_s object_t;
                     

Stringification 字符串化

#define STR(name) #name char * a = STR(object);   #=> char * a = "object";
                     

file and line 文件和行

#define LOG(msg) console.log(__FILE__, __LINE__, msg) #=> console.log("file.txt", 3, "hey")
                     

另见


打赏
标签: C++ C++备忘单

本文地址:https://www.momojc.cn/cpp/c-beiwangd.html

关于本站 | 隐私政策 | 免责声明 | 广告合作 | 我要投稿 | 后台管理

CopyRight © 2023-2024 MOMO教程 WWW.MOMOJC.CN , All Rights Reserved.

站长E-mail:378074730@qq.com 网站已运行:  运行时长:0.038 秒

京ICP备20029690号-1京ICP备20029690号-2 京公网安备11011402013892号京公网安备11011402013892号 中国互联网违法和不良信息举报中心 网络违法犯罪举报网站

本网站托管于 腾讯云 .由网站卫士提供网站加速和攻击防御服务 提供CDN加速/防御服务.由zblogcn强力驱动 又拍云提供CDN加速/云存储服务 51la网站统计