当前位置: 首页 > news >正文

01_visual_studio环境配置及C++基本概念入门

01_visual_studio环境配置及C++基本概念入门

1. 下载visual studio

  • 打开visual studio官网链接:visual studio官方网站

  • 点击下载visual studio:

  • 跳转此页面后,就已经开始下载了,如果未开始下载,可以手动点一下提示的位置:

  • 下载的是visual studio installer。

2. 安装visual studio

  • 把上一节下载的visual studio installer双击运行起来,勾选使用C++的桌面开发:

  • 安装位置可以改也可以不改,以下是本人对于软件安装目录的一些看法,仅供参考:

    • 无法脱离操作系统而独立存在的文件,比如:本次安装的VS等,建议直接放C盘,使用默认路径即可,和操作系统共生死。因为这样的话,重装系统时,就可以快速把操作系统和软件直接格式化掉,如果装在了其他盘,尤其是和个人文件放一个盘的话,还要手动删除安装目录,而安装目录一般都是一堆零碎文件,删除速度非常慢。
    • 可以独立于操作系统而存在的文件,比如:个人文件、绿色软件、原神等游戏的安装资源、虚拟机等,放其他盘。重装系统的话,只需要格式化C盘,能独立存在的文件不放C盘,就不需要被格式化掉,自然也无需备份,更省心。
    • 选好安装路径之后,点击右下角安装,等待安装完成即可。
  • 安装的visual studio不会自动创建桌面快捷方式,可以在搜索框中,搜索关键词:visual studio,即可看到刚刚安装的软件,将其拖到桌面即可创建快捷方式。

3. 创建最简单的C++程序

3.1 创建项目

  • 打开刚刚安装的visual studio,点击创建新项目

  • 在项目模板中,搜索C++,选择空项目,点击右下角下一步

  • 配置新项目:

    • 项目名称:给新项目起个名字,支持中文,但不建议用中文,不建议养成中文编码的习惯
    • 位置:选择项目和解决方案要放在哪里,支持中文,但不建议用中文,不建议养成中文编码的习惯
    • 解决方案名称:给解决方案起个名字,先可以理解为解决方案是项目的容器,一个解决方案里可以包含多个项目。VS以解决方案为单位,可以认为使用VS,必须要有一个解决方案。后续学习过程中会有所体会。同样不建议使用中文。
  • 创建完成是这个界面

  • 如果没看到解决方案资源管理器,可以在这里把它找出来

  • 解决方案资源管理器窗口,可以自由拖动,个人习惯放到左边,此窗口右上角三个按钮,中间那个按钮是固定,可以将解决方案资源管理器窗口固定住。

3.2 新建代码文件

  • 右键解决方案中的源文件,点击添加,点击新建项

  • 会弹出以下两种可能的界面,点击左下角展开所有模板,或者左下角显示紧凑视图,可以自由切换两种窗口界面


  • 给新建的cpp文件起个名字,选择其保存目录,点击添加即可。

3.3 编写最简单的cpp代码

#include<iostream> using namespace std; int main() { cout << "Hello world" << endl; system("pause"); return 0; }

3.4 运行程序

  • 点击上面的本地Windows调试器按钮,即可运行起程序

  • 运行结果如下

4. C++基本概念入门

4.1 代码与注释

4.1.1 C++代码补充说明
  • C++程序以main函数作为程序入口,所有程序都必须存在main函数
  • 关于C++的详细语法,在学习过程中慢慢体会即可,入门阶段无需扣得太细致。
4.1.2 注释
  • 注释是指代码中存在的一些说明性文字,一般用于标记此段代码用意、有何注意事项等。
    • 作用:方便自己后续回头看这段代码,或者在团队协作中,方便其他工程师阅读自己写的代码。
    • 良好的代码,不应当写大量注释,只在代码关键且难以理解的位置写简短注释即可。
    • 如果一段代码中含有大量注释,且都是一些浅显问题,那大概率是初级程序员或者AI写的
  • 注释一般有两种格式
    1. 单行注释:// 注释内容
      • 一般是写在一行代码末尾,或者一行代码上面
    2. 多行注释:/*注释内容*/
      • 虽然叫多行注释,但注释内容未必出现在多行
      • 通常出现在一段代码上方,对下面大段代码进行详细说明,或者就是下面这段代码的文档
#include<iostream> // 包含基本输入输出头文件 using namespace std; /* 这是main函数,是C++程序入口 */ int main() { cout << "Hello world" << endl; // 输出一行字 system("pause"); /* 多行注释出现在一行也是没问题的 */ return 0; }

4.2 变量、常量与宏定义

4.2.1 变量
  • 变量是给一块内存起的名字,后续可以使用这个变量读、写这块内存
  • 定义变量的语法是:数据类型 变量名 = 初始值;
  • 举例:
#include<iostream> using namespace std; int main() { int var = 1; // 这里的int是数据类型(整型),var是变量名,1是初始值 cout << "var = " << var << endl; system("pause"); return 0; }
4.2.2 常量
  • 常量的定义方法和变量基本相同,只是需要在前面加上const修饰
  • 常量是不可更改的数据
  • 举例:
#include<iostream> using namespace std; int main() { const int var = 1; // 使用const进行修饰,此时var就是常量,不可被修改 // var = 2; // 尝试修改,会编译报错 cout << "var = " << var << endl; system("pause"); return 0; }
4.2.3 宏定义
  • 宏定义本质是文本替换,这里先简单介绍,后续会遇到各种各样复杂的宏定义
  • 本人建议非必要不使用宏定义,调试难度比较高。有的场景必须使用宏定义则再使用,比如打log输出函数名时。
  • 举例:
#include<iostream> using namespace std; #define MAX 100 int main() { // 之所以说宏定义本质是文本替换,因为下面这句话在编译前的预处理阶段,就变成了这个样子: // cout << "MAX = " << 100 << endl; cout << "MAX = " << MAX << endl; // MAX = 200; // 同样是不可取的,预处理阶段会变成100 = 200,这显然是不可能的 system("pause"); return 0; }

4.3 关键字与标识符

4.3.1 关键字
  • 关键字是C++语言预先保留的词。
  • C++关键字节选如下:(不全)
asmdoifreturntypedef
autodoubleinlineshorttypeid
booldynamic_castintsignedtypename
breakelselongsizeofunion
caseenummutablestaticunsigned
catchexplicitnamespacestatic_castusing
charexportnewstructvirtual
classexternoperatorswitchvoid
constfalseprivatetemplatevolatile
const_castfloatprotectedthiswchar_t
continueforpublicthrowwhile
defaultfriendregistertrue
deletegotoreinterpret_casttry
4.3.2 标识符
  • 标识符是变量、常量、宏定义、函数等的名字,C++对这些进行命名时,需要遵循以下规则:
    • 标识符不能使用关键字,比如:int if = 1;,不可以,因为if是C++关键字,不可以被用作变量名
    • 标识符只能由字母、数字、下划线组成,且第一个字符不允许是数字,只允许是下划线或者字母
    • 标识符是大小写敏感的,严格区分大小写,比如:int a = 1; int A = 2;,a和A是两个完全不同、毫无关系的变量
      ,比如:int if = 1;,不可以,因为if是C++关键字,不可以被用作变量名
    • 标识符只能由字母、数字、下划线组成,且第一个字符不允许是数字,只允许是下划线或者字母
    • 标识符是大小写敏感的,严格区分大小写,比如:int a = 1; int A = 2;,a和A是两个完全不同、毫无关系的变量
  • 标识符建议做到见名知意,不建议使用拼音,不要养成任何中文编码的习惯。
http://www.jsqmd.com/news/1078271/

相关文章:

  • GPT-4o实战指南:参数调优、多模态落地与企业级避坑手册
  • 当下即是:当手机成为此刻
  • Docker第3天:Dockerfile、Compose、Swarm、Machine学习整理
  • 2026软考零基础保姆级备考规划!上班族高效上岸攻略
  • 9 款通信 FPGA / 交换芯片参数价格对比
  • Xinference模型部署实战:零配置启动、OpenAI兼容与GGUF优化
  • 为xv6实现符号链接:从概念到内核实践
  • 机器学习新手生存指南:从环境配置到模型部署的实操路径
  • 人民大学、上海AI实验室等联合打造的“全能生物AI“
  • 深度评测:企业采购Token服务商,一张表打满5个维度
  • 豆包AI视频三招实操:文生视频、图片动起来、数字分身全解析
  • 鸿蒙 ArkTS 实战:Lost Found Board 从状态建模到交互闭环完整解析
  • 导师推荐!2026年首选推荐的专业降AI率工具
  • Qwen2.5-VL本地部署实战:边缘多模态推理全链路指南
  • 2026旅游小程序和普通商城的区别,关键在这里
  • 用9B参数的小模型打败32B的“巨人“
  • DolphinDB工业数据质量:完整性检查与修复
  • P89LPC9321单片机引脚、时钟与SFR配置实战指南
  • 2026深度实测:vibe coding优势全解析——企业级AI开发选型实战指南
  • 厨房食品卫生与安全检测14类数据集分享(适用于YOLO系列深度学习分类检测任务)
  • 个性化 LLM Agent 不是“加个用户画像“那么简单:这篇综述把四维能力分类法定清楚了
  • 用《战舰》游戏学强化学习:从零构建可运行的RL智能体
  • 从Swagger/HAR到JMeter脚本:构建自动化性能测试工具链的工程实践
  • 为什么选择TrollInstallerX:iOS 14-16.6.1 TrollStore安装完整指南
  • AI 故障排障 Agent:从人工诊断到多源数据自动推理的工程实践
  • 铁电MEMS突触技术:神经形态计算新突破
  • Hermes 上手指南:真实开发里的落地路径
  • 动图魔方技术拆解 10:GIF 多帧重编辑的 ImageSource 与 PixelMapList 实践
  • 鸿蒙 ArkTS 实战:Pet Feeding Clock 从状态建模到交互闭环完整解析
  • PianoPlayer:如何用动态规划算法解决钢琴指法优化的数学难题