c++基础

2023-11-07

                                        C++浅谈

闲暇之际,一直想把自己那些零碎的知识给连贯起来,形成一个体系,所以才决定写点东西来整理下最近半年来的知识点,我想把自己的知识输出才是最高效的学习方法,本博客讲结合我自己本人的实际工作经验,进行浅谈,与诸君分享,共同进步,由于能力有限,博客中有纰漏和错误的地方请诸位斧正。
为何不是java和python哪,以我个人的角度来看,c++这门语音相对门槛比较高,学习比较费劲,导致从事该行业的比较少,整体从业人员的年龄也偏大,35岁的危机可能也相对晚点到来,废话不多说,本人将从c++的基本用法开始一步一步的深入挖掘。
C++的运行环境安装

  1. 1. 目前比较流行的的IDE是QT,下载到官网https://www.qt.io/download-open-source/中进行,下载完成之后进行安装
    sudo chmod +x qt-opensource-linux-x86-5.4.1.run
    sudo ./qt-opensource-linux-x86-5.4.1.run
    配置环境变量
    export QTDIR=/opt/Qt5.4.1/5.4
    export PATH= Q T D I R / g c c 6 4 / b i n : QTDIR/gcc_64/bin: QTDIR/gcc64/bin:PATH
    export LD_LIBRARY_PATH= Q T D I R / g c c 6 4 / l i b : QTDIR/gcc_64/lib: QTDIR/gcc64/lib:LD_LIBRARY_PATH
    2.使用c++ 编写的第一个程序
    #include
    using namespace std;
    int main(int argc, char** argv)
    {
    cout<<“Hello World!”<<endl;
    return 0;
    }
    (1)头文件
    语句#include中的iostream就是被include语句包含的头文件。在原来的C语言中,头文件都是以x.h的形式存在的。而在C++语言中,头文件只有名字,而没有扩展名.h,如iostream就是一个没有扩展名.h的C++头文件。原有的C语言体系的头文件部分仍然以x.h的形式存在,部分头文件被升级到C++体系中而不复存在,这部分均在原有名字的前面添加字符c来加以标志(表示此头文件是升级原C语言头文件而来的),如cmath,ctring。
    头文件的功能主要是将源程序片段收集到一起,形成一个提供给编译程序的文件。一般情况下,头文件中只包含各种声明、常量定义(注意这是常量)、预编译、注释、类型定义、模板定义等。常规的函数定义、数据定义、导出的模板定义等不应该出现在头文件中。
    使用头文件主要是为了提供类、函数、变量的声明,从而可以方便地使用这些类、函数、变量等。
    (2)命名空间:namespace
    所谓命名空间,为一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。namespace是定义命名空间的关键字,如:namespace ns1{ int a;double b; } ,为定义一个命名空间的例子,其中ns1是命名空间的名称。
    命名空间的主要作用在于:建立一些互相分割的作用域,把一些全局实体分隔开来。根据需要,可以在程序中设置许多个命名空间,每个命名空间名代表一个不同的命名空间域,不同的命名空间不能同名,命名空间中的成员也不能同名(这样的规则解决了名字冲突问题)。如此,可以把不同的库中的实体放到不同的命名空间中,或者说,用不同的命名空间把不同的实体隐蔽起来。过去我们用的全局变量可以理解为全局命名空间,独立于所有有名的命名空间之外,它是不需要用 namespace声明的,实际上是由系统隐式声明的,存在于每个程序之中。
    c++main函数主要有如下几种
    (1)int main(int argc,char** argv);
    (2)int main(int argc,char* argv[]);
    (3)int main();
    (4)void main();
    这个是在linux下命令行来运行c++程序
    1.创建c++程序
    #include
    using namespace std;
    int main()
    {
    cout << “Hello World!” << endl;
    return 0;
    }
    2.生成可执行文件
    g++是编译器, -o 指定可执行文件的名称为hello,没有该选项时,编译器采用默认的 a.out。即:运行g++ hello.cpp,会得到a.out,然后查看a.out即可 ./a.out

  2. 2. 执行程序
    g++ hello.cpp -o hello
    $ ./hello
    Hello World!
    C++ 语法
    1.C++数据类型
    在这里插入图片描述

  3. 3. C++变量
    #include
    using namespace std;
    // 变量声明 extern int a, b;
    extern int c;
    extern float f;
    int main ()
    { // 变量定义 int a, b; int c; float f;
    // 实际初始化 a = 10; b = 20; c = a + b;
    cout << c << endl ;
    f = 70.0/3.0;
    cout << f << endl ;
    return 0;
    https://automap.cdn.bcebos.com/mapautozip/5.4.0/20210730/repacked_path_for_zhuxian_adas/BaiduNavi_china.zip

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++基础 的相关文章

随机推荐

  • c# 调用c++ lib静态库

    四个步骤 1 创建C Win32项目动态库dll 2 在Win32项目动态库中添加 外部依赖项 lib头文件和lib库 3 导出C接口 4 c 调用c 动态库 开始你的表演 创建一个空白的解决方案 在解决方案中添加 Visual C Win
  • WORD文档复制在CSDN无法正常上传图片

    很多编辑者喜欢在word上写完东西后 再复制到CSDN上发布 word文档复制在CSDN上往往文字没有影响 但是图片无法正常上传 分析 原因大概是word中的图片本身就不是原图片 而是复制其他来源的图片 此时CSDN上传图片时找不到原链接
  • flask 中类视图的使用(一)

    类视图 之前我们接触的视图都是函数 所以一般简称视图函数 其实视图也可以基于类来实现 类视图的好处是支持继承 但是类视图不能跟函数视图一样 写完类视图还需要通过app add url rule url rule view func 来进行注
  • 【状态估计】基于卡尔曼滤波器和扩展卡尔曼滤波器用于 INS/GNSS 导航、目标跟踪和地形参考导航研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 算例1 2 2 算例2 2 3 算例3 3 参考文献 4 Matlab代码及数据 1
  • 前端Vue框架

    封装了HTML CSS JS的代码 按需搭建 特点 是一个轻量级的前端框架 双向绑定 数据动态更新 是一个渐进式的框架 其核心是数据驱动 组件化前端开发 Vue关注的 操作的是数据 第一步 需要将vue js文件导入到你的工程中 并把文件引
  • Column 'id' in where clause is ambiguous

    使用mysql数据库进行左右连接查询的时候出现错误提示 Column id in where clause is ambiguous 这个错误in where clause is ambiguous多半是因为多表查询的时候几个表中同时出现了
  • 【C#】《三子棋》

    使用 数组 函数 循环 实现一个超级简单的三子棋 总共200行代码 先来看看成果 运行程序 显示出菜单 选择1 开始游戏 玩家先 输入坐标 如 1 1 为电脑 为玩家 玩家胜利 按任意键继续 返回菜单 首先分别创建一个头文件和两个源文件 g
  • NeRF与三维重建专栏(一)领域背景、难点与数据集介绍

    前言 关于该系列专栏 主要介绍NeRF在三维重建中的应用 这里我们特指MVS multi view stereo 也即输入带位姿的图片 输出三维结构例如点云 mesh等 并且后面的工作也都是围绕MVS with NeRF讨论的 虽然也有wi
  • Spark 总结项目一---报错:bigger than spark.driver.maxResultSize

    七 spark集群报错 bigger than spark driver maxResultSize 难点 报错代码 20 09 15 15 21 32 ERROR scheduler TaskSetManager Total size o
  • Android Small插件化框架--启动插件Activity源码解析(下)

    转自 http m blog csdn net article details id 53158432 参考博文 http www tuicool com articles EjEJNrJ http m w2bc com article 1
  • 四、基础数据结构和算法:简单排序算法

    4 简单排序算法 4 1 冒泡排序 4 1 1 步骤 方式1 首先实现一趟冒泡排序 单趟冒泡排序将数组内最大值放到arr n 1 的位置 void bubble int arr int n for int i 0 i lt n 1 i if
  • 第5章 K8s基础篇-基本概念

    01 master节点 举个栗子 你启动3个nginx 副本 此时你想扩容至5个 输入完对应命令后 kube apiserver会通通知cm cm实施具体的容器扩缩容操作 02 Node节点 查看kube proxy工作模式 iptable
  • 如何用matplotlib绘制柱状图,并显示超出坐标范围的数据

    最近在处理数据 为了方便展示 需要绘制柱状图进行可视化 数据类似对数正态分布 即数据值越接近均值 数据越多 反之距离均值越远 数据量越少 形式类似于下图 可以看到 大部分数据落在0 10以内 大于10的部分我们不太关心 import num
  • linux下获取本机IPv6地址、前缀、网关

    获取本机IPv6信息命令 cat proc net if inet6 root IT PC 135 home user1 cat proc net if inet6 fe80000000000000922b34fffe4e70f4 02 4
  • libmodbus学习(一)之Modbus RTU-master

    一 Modbus 协议 Modbus簇主要有三种协议 Modbus RTU Modbus ASCII Modbus TCP 工控行业通常的设备组网看 三者应用的范围如下 三者模型区别如下 如上图所示 串行传输的物理层是RS 485或RS 2
  • datagrid传参_12. ajax、datagrid请求传参实例

    实例1 var data data orgRoleCode orgRoleCode data orgRoleName orgRoleName data containRoleIds containRoleIds data remark re
  • 1-问过 chatgpt 的问题(天马行空想问什么问什么)

    这里写目录标题 一 复数的极坐标形式是什么 如何求它的相位角 二 信号分解方法 2 1 了解 Fourier decomposition method 方法吗 具体解释一下它的原理 并给出一些参考文献 2 2 我说的FDM算法是出自 The
  • Unity3D项目程序加密——对dll进行混淆

    这里假设我们在Unity3D里面写的代码抽象成这样一个Test类 里面包含了公开和私有的变量 有自带的Start方法 Update方法和OnGUI方法 还有public private和protected方法 虽然说用抽象类代表了项目里面实
  • MySQL导入与导出.sql文件实操

    你是否对获得MySQL导入与导出 sql文件的实际操作感到无语 如果是这样子的话 此文将会给你相应的解决方案 以下的文章主要是介绍获得MySQL导入与导出 sql文件 的方案 以下就是相关内容的具体描述 一 MySQL的命令行模式的设置 桌
  • c++基础

    C 浅谈 闲暇之际 一直想把自己那些零碎的知识给连贯起来 形成一个体系 所以才决定写点东西来整理下最近半年来的知识点 我想把自己的知识输出才是最高效的学习方法 本博客讲结合我自己本人的实际工作经验 进行浅谈 与诸君分享 共同进步 由于能力有