嵌入式与人工智能培训——C++总结(一)续

  • switch:C仅支持int或者enum(https://blog.csdn.net/ishellhub/article/details/86285957),但是C++还可以支持class类类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型,注意:string,Long、double、float都不能作用于swtich

比如class A含有函数index,通过switch(A.index())来进行switch分类操作

  •  C++函数:传参类型和C语言一致,有类似于python的匿名函数
一般形式

return_type function_name( parameter list ) {

    body of the function

}

示例

int max(int num1, int num2) {

// 局部变量声明

int result;

if (num1 > num2)

    result = num1;

else

    result = num2;

    return result;

}

函数定义在使用之后,则需要在使用函数之前进行函数声明:return_type function_name( parameter list );

函数调用,如调用上面示例,格式:int ret = max(a,b);//定义返回变量,传参

记录下匿名函数,毕竟这个平常接触的少,需要多记记~

表达式形式

[capture](parameters)->return-type{body}   //有返回值

[capture](parameters){body}      //无返回值

示例

[](int x, int y){return x

[]{++global_x;}

[](int x, int y) -> int {int z = x+y; return z+x;}

注意:

1,C++变量传递有传值和传引用的区别。可以通过前面的[]来指定:

[] // 沒有定义任何变量。使用未定义变量会引发错误。

[x, &y] // x以传值方式传入(默认),y以引用方式传入。

[&] // 任何被使用到的外部变量都隐式地以引用方式加以引用。

[=] // 任何被使用到的外部变量都隐式地以传值方式加以引用。

[&, x] // x显式地以传值方式加以引用。其余变量以引用方式加以引用。

[=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。

2,对于[=]或[&]的形式,lambda 表达式可以直接使用 this 指针。但是,对于[]的形式,如果要使用 this 指针,必须显式传入:

[this]() { this->someFunc(); }();


 - C++随机数:复习一下随机数的生成

 @ 采用STL实现随机数的生成:

  1. #include // For random_device class
  2. #include // For standard streams
  3. int main()
  4. {
  5. std::random_device rd; // A function object for generating seeds
  6. for(size_t n {}; n < 8; ++n)
  7. std::cout << rd() << " ";
  8. std::cout << std::endl;
  9. }

 @ 采用time.h头文件调用rand函数实现

 1 srand((unsigned)time(nullptr));

 2 for (int i = 0; i < 10; i++)

 3 cout << rand() << endl;

 4 cout << endl;

 - C++字符串:C 风格字符串和 string 类类型

 @ C风格字符串:以'/0'结束的字符数组,初始化:char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; char greeting[] = "Hello";

       C++null  结束字符串操作函数:strcpy(s1, s2); strcat(s1, s2); strlen(s1); strcmp(s1, s2); strchr(s1, ch); strstr(s1, s2);

       C++  字符串类string,支持上述函数还有其它操作:+,size()

@ 二者可以相互转换:

    string str("hello"); //string类可自动将C风格字符串转string对象

    const char* mystr = str.c_str(); //c_str方法返回字符串首指针地址,string-->const char*
 - C++指针:在C/C++中都很重要,变量地址

#include 
 
using namespace std;
 
int main ()
{
   int  var = 20;   // 实际变量的声明
   int  *ip;        // 指针变量的声明
 
   ip = &var;       // 在指针变量中存储 var 的地址
 
   cout << "Value of var variable: ";
   cout << var << endl;
 
   // 输出在指针变量中存储的地址
   cout << "Address stored in ip variable: ";
   cout << ip << endl;
 
   // 访问指针中地址的值
   cout << "Value of *ip variable: ";
   cout << *ip << endl;
 
   return 0;
}

 - C++引用:引用和指针不同,引用是变量别名,即变量本身,而指针是变量地址

#include 
 
using namespace std;
 
int main ()
{
   // 声明简单的变量
   int    i;
   double d;
 
   // 声明引用变量
   int&    r = i;
   double& s = d;
   
   i = 5;
   cout << "Value of i : " << i << endl;
   cout << "Value of i reference : " << r  << endl;
 
   d = 11.7;
   cout << "Value of d : " << d << endl;
   cout << "Value of d reference : " << s  << endl;
   
   return 0;
}

 - C++基本输入输出

 C++基本输入输出包含cin,cout,cerr以及clog,其中在输入输出时我们可以通过一些函数来进行格式化输出,这部分函数主要是针对数字这种类型数据的输出的,下面是一个示例:

#include 
#include 
using namespace std;
int main()
{
    cout<

 - C++数据结构

结构用于表示一条记录,一般我们采用结构体指针这种方式来进行传参赋值等等,直接用结构体操作的不多,下面是一个基本使用示例:

#include 
#include 
 
using namespace std;
void printBook( struct Books *book );
 
struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};
 
int main( )
{
   Books Book1;        // 定义结构体类型 Books 的变量 Book1
   Books Book2;        // 定义结构体类型 Books 的变量 Book2
 
    // Book1 详述
   strcpy( Book1.title, "C++ 教程");
   strcpy( Book1.author, "Runoob"); 
   strcpy( Book1.subject, "编程语言");
   Book1.book_id = 12345;
 
   // Book2 详述
   strcpy( Book2.title, "CSS 教程");
   strcpy( Book2.author, "Runoob");
   strcpy( Book2.subject, "前端技术");
   Book2.book_id = 12346;
 
   // 通过传 Book1 的地址来输出 Book1 信息
   printBook( &Book1 );
 
   // 通过传 Book2 的地址来输出 Book2 信息
   printBook( &Book2 );
 
   return 0;
}
// 该函数以结构指针作为参数
void printBook( struct Books *book )
{
   cout << "书标题  : " << book->title <author <subject <book_id <

 

你可能感兴趣的:(基础知识整理)