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

【C++ 入门】第一个程序:Hello World 与基本语法规则

1. 第一个 C++ 程序

让我们从最经典的Hello World开始:

#include<iostream>usingnamespacestd;intmain(){cout<<"Hello World!"<<endl;return0;}

运行结果:

Hello World!

2. 逐行解释(基本语法规则)

代码含义
#include <iostream>预处理指令:将输入输出流库的头文件包含进来,这样我们才能使用cout输出内容。
using namespace std;使用标准命名空间:标准库中的名字(如coutendl)都在std命名空间里,加上这句后可以直接写cout,否则要写std::cout
int main()主函数:每个 C++ 程序必须有一个main函数,程序从这里开始执行。int表示返回值类型是整数。
{ ... }函数体:花括号内的代码是函数要执行的内容。
cout << "Hello World!" << endl;输出语句:将字符串"Hello World!"送到控制台,endl表示换行并刷新输出缓冲区。
return 0;返回语句:向操作系统返回 0,表示程序正常结束。

补充规则:

  • C++ 中每条语句以分号;结束。
  • 注释:// 单行注释/* 多行注释 */
  • 大小写敏感:main不能写成Main

3. 内存模型讲解(浅显易懂)

当你运行这个Hello World程序时,操作系统会把程序加载到内存中。内存分为几个“区域”:

┌─────────────────┐ 高地址 │ 栈 (Stack) │ ← 存放局部变量、函数调用信息 ├─────────────────┤ (本例中 main 函数的栈帧) │ 堆 (Heap) │ ← 动态分配的内存(new/malloc) ├─────────────────┤ 本例未使用 │ 数据段 (Data) │ ← 全局变量、静态变量(本例无) ├─────────────────┤ │ 代码段 (Code) │ ← 存放程序的二进制指令(main 函数的指令) └─────────────────┘ 低地址

我们程序的简单内存布局:

  • 代码段:存放#include展开后的 iostream 库函数代码,以及我们写的main函数的机器指令(比如cout << ...对应的指令)。
  • :当调用main函数时,系统会在栈上为main分配一块空间(栈帧),里面保存了返回地址、局部变量等。虽然本例没有显式局部变量,但cout操作会临时使用一些栈空间。
  • 常量区(通常合并到代码段或只读数据段):字符串字面量"Hello World!"被存放在只读区域,cout指令会从那里读取数据并输出。

🔍 你不需要现在完全理解所有内存区域,只需要知道:程序运行时,指令在代码段,局部变量在栈上,字符串字面量在只读区域

4. 常见错误与避坑

错误写法问题
include <iostream>忘了#预处理指令必须从#开始
int main()后面忘了{函数体必须用花括号
cout写成CoutC++ 大小写敏感
语句末尾忘了;会报编译错误
return 0忘了;同上

5. 练习题

题目
修改上面的Hello World程序,让它在两行分别输出:

My name is [你的名字] I am learning C++!

要求:

  1. 使用两次cout语句。
  2. 在第二行末尾换行。
  3. 保持return 0;

总结:今天我们写了第一个 C++ 程序,了解了基本语法规则,并用内存模型简单看到了程序运行时的分区。下一篇文章我们将深入讲解变量与常量。

如果你完成了练习题,欢迎在评论区贴上你的输出截图~

http://www.cnnetsun.cn/news/1771452.html

相关文章:

  • 基于51单片机的扫地小车代码功能说明
  • .NET 9容器化性能突降之谜:gRPC服务在Pod内延迟飙升200%的根因分析与eBPF验证方案
  • Deneyap 6轴IMU Arduino驱动库:轻量跨平台六自由度传感方案
  • STM32智能音乐闹钟开发全解析
  • 别再让AI瞎搞了!用Claude Code的SubAgent给你的项目分工,像管理团队一样清晰
  • 无障碍助手:OpenClaw利用Qwen3.5-9B实现屏幕阅读增强
  • PZEM003_Fud:RS485 Auto免方向控制电参数采集库
  • 嵌入式进程通信优化:nanomsg实战解析
  • 【MCP over Python 架构黄金标准】:基于gRPC+FastAPI+Redis Stream的5层解耦设计图,已通过10万TPS压测验证
  • 2025届最火的十大AI写作神器推荐
  • RPAsyncTCP:Pico W/Pico 2W 的异步TCP网络库
  • 零成本搭建私有云笔记!Windows+WebDAV+Cpolar实现Obsidian全平台同步指南
  • LangChain 1.0 实战:用 @tool 装饰器5分钟搞定你的第一个AI工具函数
  • 嵌入式SOAP客户端:轻量级IHC家居控制器通信库
  • FastAPI子应用挂载:别再让root_path坑你一夜眯
  • OpenClaw技能扩展实战:千问3.5-9B驱动微信公众号自动发布
  • OpenClaw技能开发:为Phi-3-vision-128k-instruct添加自定义视觉过滤器
  • FreeRTOS轻量级嵌入式日志系统设计与实现
  • 校园无人超市管理系统设计与实现
  • RWA抵押:稳定币的“硬锚革命”如何撬动十万亿级金融新基建?
  • 飞跨电容三电平拓扑的实战解析:从数学原理到SiC MOSFET的高频设计
  • Linux内核架构解析与学习路线指南
  • AI Agent 跑完任务怎么通知你?我写了个微信推送服务凉
  • ARM中断机制与Linux实现深度解析
  • 别再死记硬背!用这5个生活化比喻,轻松搞懂计算机网络三大交换技术
  • 别再手动解析了!STM32CubeMX + JY901陀螺仪,用DMA空闲中断实现稳定数据接收(附完整工程)
  • 【无限视距】:R3nzSkin的MOBA视野增强技术原理与实战指南
  • Excel数据处理
  • Windows系统的MBR磁盘分区
  • HLS高层次综合发展史