c语言入门到c++使用高手:深入学习C++之基本语言(三)

编程入门 行业动态 更新时间:2024-10-17 14:31:29

c<a href=https://www.elefans.com/category/jswz/34/1770116.html style=语言入门到c++使用高手:深入学习C++之基本语言(三)"/>

c语言入门到c++使用高手:深入学习C++之基本语言(三)

第二章 基本语言

第三节 auto、头文件防卫、引用、常量

1. 局部变量及初始化

  • 随时用到,随时定义
#include <iostream>int main() {// i的作用域仅仅限制 在for循环内for (int i = 0; i < 10; i++) {std::cout << "i = " << i << std::endl;}return 0;
}
  • 定义的时候初始化
#include <iostream>int main() {// int abc = {5},等号在这里可有可无int abc{5};std::cout << "abc = " << abc << std::endl;for (int i{0}; i < 5; i++) {std::cout << "i = " << i << std::endl;}// 可以使用等号,也可以不进行使用int a[]{11, 10, 9};for (int i{0}; i < (sizeof(a) / sizeof(int)); i++) {std::cout << "i = " << i << std::endl;}//    int  abcd=3.5f; // 丢了.5,被系统截断了// 无法编译成功,系统执行了浮点数到整数的转换
//    int abcd{3.5f};return 0;
}

2. auto

  • 变量的自动类型推断,auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型
    (声明时要初始化)

  • auto自动类型推断发生在编译期间,使用auto不会造成程序执行效率降低

#include <iostream>int main() {auto bvalue = true;auto ch = 'a';auto dv = 1.2f;auto iv = 5;return 0;
}

3. 头文件防卫

  • 头文件互相包含会出现重定义的问题
//
// Created by felaim on 2020/5/12.
//#ifndef LESSION_PART_TWO_PRO1_H
#define LESSION_PART_TWO_PRO1_H
namespace B {void radius();void radius2();
}
#endif //LESSION_PART_TWO_PRO1_H

4. 引用

  • 为变量起了另外一个名字,一般用&符号表示,起完别名后,这别名和变量本身可以看成是一个变量
#include <iostream>using namespace std;//形参是引用类型
void func(int &ta, int &tb) {ta = 4; //改变这个值会影响到外界tb = 5;
}int main() {int value = 10;//value的别名就是value1, &在这里不是求地址运算符,只是起标识作用// 定义引用,并不额外占用内存// 定义引用的时候必须得初始化,不然给谁起别名呢?int &value1 = value;cout << value << endl;cout << value1 << endl;//引用必须要绑定到变量上去,绑定到对象上去也可以,不能绑定到常量上去
//    int &value3 = 10;// 不可以,引用类型要相同
//    float &value3 = value;int a = 3;
//    int &b = a;//引用, 注意&符号在=的左边
//    int *p = &a;//取地址符, 注意&符号在=的右边int b = 100;func(a, b);cout << "a: " << a << " b: " << b << endl;return 0;
}

5. 常量

  • 不变的量

  • const: 表示不变的意思

#include <iostream>using namespace std;int main() {// 表示这个变量的值不会去改变,命名常量const int var = 7;cout << "var: " << var << endl;// 如果修改成10, 编译时报错error: assignment of read-only variable ‘var’
//    var = 10;// 强制转换,不要这么做,容易出错int &var2 = (int &)var;var2 = 88;cout << "var: " << var << endl; // 7cout << "var2: " << var2 << endl; // 88return 0;
}
  • constexpr 关键字: c++11引入的, 也是常量的概念, 在编译的时候求值,肯定能够提升性能
    (感觉这段课程讲的有些问题,下面这段代码在c++11中是不支持的,但是到c++14, c++17就支持了,可能这个对各个标准支持还是不太一样的)
    参考地址:
#include <iostream>using namespace std;constexpr int func(int abc) {abc = 8;return 5;
}int main() {constexpr int var = 1;int b = 5;constexpr int var2 = func(11);return 0;
}

更多推荐

c语言入门到c++使用高手:深入学习C++之基本语言(三)

本文发布于:2024-02-06 11:50:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1749151.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语言   入门   高手

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!