• 初识C++(五)


    简述:初识C++章节最后一节啦 整体感觉就是C++像是C++的补充和升级 以一种更简单的方式奔向普罗大众 从而也能使更多人接受编程 当然不是讲C++简单 就是C++像是从机器时代进入了电气时代 以更简单的操作实现更高的效率,这是我在接触C++一周时的整体印象。

    目录

    auto关键字

    拓展:

    auto的使用:

    实际引用:

    范围for

    范围for的使用

    范围for的使用条件

    空值nullptr(关键字)


    auto关键字

    拓展:

    首先拓展一条知识 :

     最简单的例子:

     他可以推出来一个变量的类型 ,有什么用? 往下看 》》》

    auto的使用:

    对于之前auto的用法我们简单了解就好 ,毕竟现在也没法使用了,编译器也不支持了,不再涉及。

    auto用于自动推导类型

    但是有缺点  》》 会丢失const类型   

    注意:

    1.auto 不能作为函数的参数

    ​​​​​​​

    2.auto不能声明数组

     

    实际引用:

    但是上面的例子 在实际应用中还是比较少的  》》》我能自己输int,那auto有什么用呢?

    1. std::map<std::string, std::string> dict = { { "sort", "排序" }, { "insert", "插入" }
    2. };
    3. //像这种写起来很麻烦的 根据右边的值自动去推导it的类型 就方便了
    4. auto it = dict.begin();

    像这种 前面比较麻烦 直接根据右边的值自动推导 这个效率还是比较高的。

    有些人用typedef进行简写也是可以的,不过这里也要举一个typedef的不足之处

     const变量是必须被初始化的,因此这里至少应改为 const pstring p1 = nullptr;

    范围for

    之前在打印数组下标的时候 都要用

    1. int main()
    2. {
    3. int arr[] = { 1,2,3,4,5 };
    4. int sz = sizeof(arr) / sizeof(int);
    5. int i = 0;
    6. for (i = 0; i < sz; i++)
    7. {
    8. cout << arr[i] << endl;//打印数组中的每个元素
    9. }
    10. }

    但是C++11标准新添加的范围for极大的提高了这个操作的效率

    范围for的使用

    C++11中引入了基于范围的for循环。for循环后的括号由冒号“ :”分为两部分:第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。

    举一个和上面相同的例子::

     因为有了auto 甚至数组元素的类型都不需要自己填写了

    》》》但是也可以写

    这个循环也是可以使用break  continue的

    范围for的使用条件

    那么简单 有没有使用条件呢?

    迭代范围必须是确定的   比如

    》》》

    1. void TestFor(int array[])
    2. {
    3.   for(auto& e : array)
    4.     cout<< e <<endl;
    5. }

    数组传到函数中,意义就变了,for的循环就不确定了 不确定的是不能用的。

    空值nullptr(关键字)

    诶,我们之前不是有NULL了吗?为什么还要有nullptr

    这个是C++11为了弥补C++98和03定义的缺陷

    ??还有缺陷 ??

    在之前版本中 NULL实际是个宏 ,我们来看一下传统C头文件的代码

    1. #ifndef NULL
    2. #ifdef __cplusplus
    3. #define NULL  0
    4. #else
    5. #define NULL  ((void *)0)
    6. #endif
    7. #endif

    可以看到NULL可能被定义为字面常量0

    我们设计实验来验证一下

    》》》 》》》

     可以看到 f(NULL)被定义成了字面常量0  从而无法达到理想中作为空指针的效果 

    因此为了提高代码的健壮性,在后续表示指针空值时建议最好使用nullptr。

    到此:初识C++章节正式结束,感谢阅读。

  • 相关阅读:
    基于栅格地图的路径规划(一)基于Matlab二维、三维栅格地图的构建
    Smurf攻击、Sockstress
    Nginx修改默认Content-Type值
    Java的String类的常用方法【总结】
    Android 14 正式发布,已经在 AOSP 中上线
    【RNN从入门到实战】GRU入门到实战——使用GRU预测股票。
    Spire.PDF 8.11.10 supports .NET 7.0 and PDF to PPTX
    YGG 公会发展计划第 1 季总结
    各位同志,Android studio打不开,提示什么动态链接库
    纸条解密-栈的应用
  • 原文地址:https://blog.csdn.net/D_H964/article/details/127772550