当前位置:   article > 正文

C++学习笔记

C++学习笔记

一、C++、QT与嵌入式的那些事o,0’

C++:与QT配合搭建图形化开发,阅读linux内核源码打基础

QT:在嵌入式领域中进行图形化开发

市场上的嵌入式设备:

1、单片机:RTOS(FreeRTOS / RTThread)

      跑界面:mini GUI (C/C++)        LVGL(C语言)

2、高端ARM开发板:安卓

      跑界面:专门做安卓应用的开发

3、高端ARM开发板:Linux

      跑界面:QT

国家大力推国产化:

        芯片:龙芯、飞腾、兆易创新

        OS  :鸿蒙、澎湃、优麒麟、红旗 

在国产芯片上移植国产的操作系统就是嵌入式工程师的工作。

国产操作系统以Linux为基础,因此图形化开发也需要我们。

-----------------------------------------------------------------------------------------

要给一个指定的地址存储整数,需要先将地址强转为地址类型

如:

*(int *)(0x12345678) = 100;

*(volatile unsigned int *)(0x12345678) = 100;(常用)

volatile:防止编译器优化(编译器优化指的是,当编译器发现你初始化了一个值,但在接下来的语句中并没有进行操作,则编译器认为你这种行为是没有实际意义的,所以给你优化掉了,就是不执行了)

不可:

0x12345678 = 100 (编译器理解为要对整型数进行赋值,报错)

*(0x12345678) = 100 (编译器理解为要对一个整型数进行取值,报错)

-----------------------------------------------------------------------------------------

1、职位匹配

        (1)、C++开发工程师

        (2)、嵌入式应用开发(C/C++)

        (3)、嵌入式QT开发工程师

2、主要学习内容

        (1)、C到C++过渡

        (2)、类和对象(C++如何创建类、创建对象、如何进行封装?)

        (3)、继承和多态

        (4)、模板(泛型编程)

        (5)、文件IO

        (6)、异常处理

        (7)、多线程

        (8)、STL模板库(数据结构和算法)

3、学习环境

        开发环境                Linux平台

        编辑器                   Vim、VsCode

        编译器                   g++(和gcc一样是GUN的编译器)

        文件后缀                xxx.cpp(C Plus Plus)

二、从C到C++

 1、头文件

        【c】        #include <stdio.h>

        【c++】    #include <iostream> / #include <stdlib>

注意:C++在包换头文件时不需要写“.h”,如果想要包含“stdlib.h”,只需要写成#include <stdlib>

           主要因为C++中有一个概念“命名空间”(namespace)

            早期标准库将所有的功能在全局域中实现,声明在.h文件使用的时候需要包含对应的头文件,后来C++标准引入了命名空间,就把C++的标准库的定义实现都放在了命名空间中。

-----------------------------------------------------------------------------------------

包含头文件时,尖括号<>与双引号""的区别

主要是搜索路径不同

双引号#include“”格式:我们常常引用非标准库的头文件,即我们自己写的头文件,编译器从用户的工作目录开始搜索

               1)在当前源文件所在的工作目录中进行查找

               2)在编译器设置的头文件查找路径,编译器有默认的头文件查找路径(可以在编译时,使用-l显式指定搜索路径)

               3)系统变量CPLUS_INCLUDE_PATH/C_INCLUDE_PATH指定的头文件路径

尖括号#include<>格式: 我们常常引用标准库头文件,编译器从标准库目录开始搜索

               1)在编译器设置的头文件查找路径,编译器有默认的头文件查找路径(可以在编译时,使用-l显式指定搜索路径)

               2)系统变量CPLUS_INCLUDE_PATH/C_INCLUDE_PATH指定的头文件路径

-----------------------------------------------------------------------------------------

2、命名空间(namespace)

        将变量名(一般是全局的)(函数名、类型名)限制到一个空间(命名空间)

-----------------------------------------------------------------------------------------

变量的三个关注点(作用域,存储空间,生命周期)

全局变量 说明 定义在函数外的变量
作用域 整个进程
生存周期 整个进程
存储位置

未初始化的在bss段,值一定是0

已初始化的在data段

局部变量 说明 定义在函数内的变量
作用域 函数内
生存周期 到函数结束
存储位置

栈区

未初始化一定是随机值

局部静态变量 说明 由static修饰的局部变量
作用域 函数内
生存周期 整个进程
存储位置

未初始化的在bss段,值一定是0

已初始化的在data段

 -----------------------------------------------------------------------------------------

        1)作用

                缩短变量名的作用域(只在命名空间中有效,用来防止多文件多模块编程时出现命名冲突的问题)

        2)语法

                定义命名空间的方式

  1. namespace myTestname
  2. {
  3. int a; // 整型变量
  4. FILE *fp; // 文件流指针
  5. void test(void); // 函数的声明
  6. } // 注意:没有分号
        3)打开命名空间

                [1]使用域作用限定符号

                        命名空间的名字::变量名

                        例如:myTestname::a、std::cout

                [2]展开命名空间(把限制打开)

                        using namespace 命名空间的名字

                        例如:using namespace std;、usingnamespace myTestname;

                        注意:在写项目时不适合用第二种方式,命名空间中的所有成员都在全局域中,这样会有冲突

        4)输入输出

                C语言是面向过程的语言,输入输出是函数提供的

                C++是面向对象的语言,输入输出是对象

                 [1]标准输入istream----预定义的对象cin

cin >> n; // 读取一个数据,存储到n中

在C语言中,我们使用scanf给一个变量录入数值。 

                 [2]标准输出ostream----预定义的对象cout

cout << "hello" << endl; // 输出一个字符串hello

endl(end of line)是C++标准库中的操控器,代表换行

在输入和输出时用到了“<<”和“>>”,其实就是位运算符,只不过运算符重载了。

cin和cout是由iostream头文件提供的对象,所以想要使用的话,需要包含这个头文件。

3、动态存储空间的开辟和释放

        谁打开谁关闭                文件IO

        谁申请谁释放                堆区的空间(malloc realloc calloc / free)

        谁创建谁销毁                链式存储结构

        谁加锁谁解锁                线程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/819031
推荐阅读
相关标签
  

闽ICP备14008679号