C++基础 2020-11-03

thread_local 存储类

  • 使用 thread_local 说明符声明的变量仅可在它在其创建的线程上访问
  • 变量在创建线程时创建,并在销毁线程时销毁
  • thread_local 说明符可以与 static 或 extern 合并
  • 每个线程都有其自己的变量副本

位运算符

  • ^ : binary加
  • << : 向左移动指定的位数

杂项运算符

  • sizeof : 返回变量的大小
  • , : 顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值
  • Cast : 强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2

C++ 函数

  • 每个 C++ 程序都至少有一个函数,即主函数 main()
  • 可以把代码划分到不同的函数中
  • 函数声明告诉编译器函数的名称、返回类型和参数
  • C++ 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置
  • 函数还有很多叫法,比如方法、子例程或程序
  • 向参数传递一个值,这个值被称为实际参数
  • 函数声明会告诉编译器函数名称及如何调用函数
  • 在函数声明中,参数的名称并不重要,只有参数的类型是必需的
  • 在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。在这种情况下,您应该在调用函数的文件顶部声明函数

函数参数

  • 如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数
  • 形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁

三种向函数传递参数的方式:

  • 传值调用 : 该方法把参数的实际值赋值给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响
  • 指针调用 : 该方法把参数的地址赋值给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数
  • 引用调用 : 该方法把参数的引用赋值给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数
  • 默认情况下,C++ 使用传值调用来传递参数

参数的默认值

  • 可以为参数列表中后边的每一个参数指定默认值
  • 如果实际参数的值留空,则使用这个默认值
  • 在函数定义中使用赋值运算符来为参数赋值

Lambda 函数与表达式

  • C++11 提供了对匿名函数的支持
  • Lambda 表达式把函数看作对象,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值
  • [capture](parameters)->return-type{body}
  • [](int x, int y){ return x < y ; }
  • 在Lambda表达式内可以访问当前作用域的变量,这是Lambda表达式的闭包(Closure)行为
  • 与JavaScript闭包不同,C++变量传递有传值和传引用的区别,可以通过前面的[]来指定
  • [] // 沒有定义任何变量。使用未定义变量会引发错误
  • [x, &y] // x以传值方式传入(默认),y以引用方式传入
  • [&] // 任何被使用到的外部变量都隐式地以引用方式加以引用
  • [=] // 任何被使用到的外部变量都隐式地以传值方式加以引用
  • [&, x] // x显式地以传值方式加以引用。其余变量以引用方式加以引用
  • [=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用
  • 对于[=]或[&]的形式,lambda 表达式可以直接使用 this 指针。但是,对于[]的形式,如果要使用 this 指针,必须显式传入

C++ 数学运算

  • 需要引用数学头文件 <cmath>
  • hypot(double, double); 返回两个参数的平方总和的平方根
  • rand(),该函数只返回一个伪随机数
  • 生成随机数之前必须先调用 srand() 函数
    // 设置种子 
    srand( (unsigned)time( NULL ) );
    cout<<rand();

C++ 数组

  • 所有的数组都是由连续的内存位置组成
  • 最低的地址对应第一个元素,最高的地址对应最后一个元素
  • 省略掉了数组的大小,数组的大小则为初始化时元素的个数
  • C++ setw() 函数用于设置字段的宽度, n 表示宽度
  • 当后面紧跟着的输出字段长度小于 n 的时候,在该字段前面用空格补齐,当输出字段长度大于 n 时,全部整体输出
  • 可以 setfill() 配合使用设置其他字符填充

多维数组

  • type name[size1][size2]...[sizeN];
  • 内部嵌套的括号是可选的
  • C++ 不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针
  • C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量
    int * getRandom( )
    {
      static int  r[10];
     
      // 设置种子
      srand( (unsigned)time( NULL ) );
      for (int i = 0; i < 10; ++i)
      {
        r[i] = rand();
        cout << r[i] << endl;
      }
     
      return r;
    }
  • C++ 中您可以通过指定不带索引的数组名来传递一个指向数组的指针
  • C++ 传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址
  • C++ 不会对形式参数执行边界检查
  • 数组名是指向数组中第一个元素的常量指针

在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数:

  • 形式参数是一个指针myFunction(int *param)
  • 形式参数是一个已定义大小的数组 myFunction(int param[10])
  • 形式参数是一个未定义大小的数组 myFunction(int param[])

字符串

  • C 风格的字符串
  • 字符串实际上是使用 null 字符 '\0' 终止的一维字符数组
  • 不需要把 null 字符放在字符串常量的末尾,C++ 编译器会在初始化数组时,自动把 '\0' 放在字符串的末尾
  • strcpy,strcat,strlen,strcmp,strchr,strstr
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344