C++基础知识(一)—— C++程序结构
下面我们从一个最简单的程序入手看一个C++程序的组成结构。
// my first program in C++ #include <iostream.h> using namespace std; int main() { |
Hello World! |
上面左侧显示了我们的第一个程序的源代码,代码文件名称为hellowworld.cpp。右边显示了程序被编译执行后的输出结果。编辑和编译一个程序的方法取决于你用的是什么编译器,根据它是否有图形化的界面及版本的不同,编译方法也有可能不同,具体请参照你所使用的编译器的使用说明。
以上程序是多数初学者学会写的第一个程序,它的运行结果是在屏幕上打出”Hello World!”这句话。 虽然它可能是C++可写出的最简单的程序之一,但其中已经包含了每一个C++程序的基本组成结构。
下面我们就逐个分析其组成结构的每一部分:
// my first program in C++
这是注释行。所有以两个斜线符号(//)开始的程序行都被认为是注释行,这些注释行是程序员写在程序源代码内,用来对程序作简单解释或描述的, 对程序本身的运行不会产生影响。在本例中, 这行注释对本程序是什么做了一个简要的描述。
# include < iostream.h >
以#标志开始的句子是预处理器的指示语句。它们不是可执行代码,只是对编译器作出指示。在本例中这个句子# include < iostream.h > 告诉编译器的预处理器将输入输出流的标准头文件(iostream.h)包括在本程序中。这个头文件包括了C++中定义的基本标准输入-输出程序库的声明。此处它被包括进来是因为在本程序的后面部分中将用到它的功能。
using namespace std;
C++标准函数库的所有元素都被声明在一个名空间中,这就是std名空间。因此为了能够访问它的功能,我们用这条语句来表达我们将使用标准名空间中定义的元素。这条语句在使用标准函数库的C++程序中频繁出现,本教程中大部分代码例子中也将用到它。
int main()
这一行为主函数(main function)的起始声明。main function是所有C++程序的运行的起始点。 不管它是在代码的开头,结尾还是中间 – 此函数中的代码总是在程序开始运行时第一个被执行。并且,由于同样的原因,所有C++程序都必须有一个main function。
main 后面跟了一对圆括号(),表示它是一个函数。C++中所有函数都跟有一对圆括号 (),括号中可以有一些输入参数。如例题中显示,主函数(main function)的内容紧跟在它的声明之后,由花括号 ({})括起来。
cout << “Hellow World!”;
这个语句在本程序中最重要。 cout 是C++中的标准输出流(通常为控制台,即屏幕),这句话把一串字符串(本例中为”Hello World”)插入输出流(控制台输出)中。cout 在的声明在头文件iostream.h中,所以要想使用cout 必须将该头文件包括在程序开始处。
注意这个句子以分号(;)结尾 。分号标示了一个语句的结束,C++的每一个语句都必须以分号结尾。 (C++ 程序员最常犯的错误之一就是忘记在语句末尾写上分号) 。
return 0;
返回语句(return) 引起主函数 main()执行结束,并将该语句后面所跟代码(在本例中为0) 返回。这是在程序执行没有出现任何错误的情况下最常见的程序结束方式。在后面的例子中你会看到所有C++程序都以类似的语句结束。
你可能注意到并不是程序中的所有的行都会被执行。程序中可以有注释行(以//开头),有编译器预处理器的指示行(以#开头),然后有函数的声明(本例中main函数),最后是程序语句(例如调用cout <<),最后这些语句行全部被括在主函数的花括号({})内。
本例中程序被写在不同的行中以方便阅读。其实这并不是必须的。例如,以下程序
{
cout << " Hello World ";
return 0;
}
也可以被写成:
以上两段程序是完全相同的。
在C++中,语句的分隔是以分号(;)为分隔符的。分行写代码只是为了更方便人阅读。
以下程序包含更多的语句:
// my second program in C++ #include <iostream.h> int main () |
Hello World! I'm a C++ program |
在这个例子中,我们在两个不同的语句中调用了cout << 函数两次。再一次说明分行写程序代码只是为了我们阅读方便,因为这个main 函数也可以被写为以下形式而没有任何问题:
为方便起见,我们也可以把代码分为更多的行来写:
{
cout <<
"Hello World!";
cout
<< "I'm a C++ program";
return 0;
}
它的运行结果将和上面的例子完全一样。
这个规则对预处理器指示行(以#号开始的行)并不适用,因为它们并不是真正的语句。它们由预处理器读取并忽略,并不会生成任何代码。因此他们每一个必须单独成行,末尾不需要分号(;)
注释 (Comments)
注释(comments)是源代码的一部分,但它们会被编译器忽略。它们不会生成任何执行代码。 使用注释的目的只是使程序员可以在源程序中插入一些说明解释性的内容。
C++ 支持两中插入注释的方法:
/* block comment */
第一种方法为行注释,它告诉编译器忽略从//开始至本行结束的任何内容。第二种为块注释(段注释),告诉编译器忽略在/*符号和*/符号之间的所有内容,可能包含多行内容。
在以下我们的第二个程序中,我们插入了更多的注释。
/* my second program in C++ with more comments */ #include <iostream.h> int main () |
Hello World! I'm a C++ program |
如果你在源程序中插入了注释而没有用//符号或/*和*/符号,编译器会把它们当成C++的语句,那么在编译时就会出现一个或多个错误信息。
C++基础知识(一)—— C++程序结构相关推荐
- linux文本运行层次,Linux基础知识之---文件系统层级结构
#Linux基础知识之---文件系统层级结构 @(Linux系统)[基础知识,文件系统,层级结构,FHS] 一切皆文件: 在Linux中,无论是目录.配置.cpu.内存.键盘.鼠标.或者运行中的系统及 ...
- c 结构体在声明时赋值_Java基础知识 初识Java 循环结构进阶 数组 数据类型 各种运算符...
今天给大家带来的是初级Java基础部分的知识:包括初始Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细, ...
- java基础知识总结---黑马程序员
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...
- WPS-JS宏开发-基础知识-03-三大基本结构
系统:Windows 11 软件:WPS表格11 本系列介绍一款类Excel的软件,WPS表格 当然也是介绍其宏开发,不同的是,使用的JS宏 会同样介绍多个系列,本系列介绍一些基础知识 Part 1: ...
- C ++基础 | 从 理解C++程序结构 到 编写程序_1
目录 程序结构 第一个 C++ 程序 善用注释 g++ 编译 使用命名空间 写入控制台 程序结构 每个 C ++ 程序由两部分组成,预处理器指令(Preprocessor) 和 主函数(main()) ...
- iOS基础(c)—程序结构的分类
------ 知之博客 期待与您交流! ------- 一 程序结构的分类 程序结构分为三类: 1)顺序结构 顺序结构是最简单的程序结构,它是由若干个一次执行的处理步骤组成的. 按照顺 ...
- web项目java程序的作用_基础知识(javaWeb工程目录结构)及各文件夹的作用
在Eclipse中只要创建一个Dynamic Web Project,就可以根据创建向导创建出一个典型Java Web站点的目录结构.除非有特殊需要,在大多数情况下都没有必要修改这个目录结构,这也是W ...
- jQuery基础知识(黑马程序员前端基础必备教程视频笔记)
一.jQuery概述 1.JavaScript库 即library,是一个封装好的特定的集合(方法和函数).从封装的一大堆函数的角度理解库.就是在个库中,封装了很多预先定义好的函数在里面,比如动画an ...
- java基础 -- 数据类型,基本程序结构
JAVA基础概念 程序示例 //public 访问修饰符,这些修饰符用于控制程序的其他部分对这段代码的访问级别 // 关键字 class 表明Java程序中全部的内容都包含在类中,这里只需要将类作为加 ...
- 【前端基础】12.CSS 基础知识学习——基本语法结构
视频 目录 一,css基本规则规范 1.快捷方式 2.css注释 3.css命名规范 4.css书写规范 (1)空格规范 (2)选择器规范 (3)属性规范 5.css样式规则 二,字体样式 1.fon ...
最新文章
- mac上的终端bash命令
- 批量将PNG转为JPG
- DOS攻击之详解--转载
- java 注解 属性 类型_跟光磊学Java开发-Java注解
- 智能建筑进入新的十年
- 阿里云docker hub
- IntelliJ IDEA使用(一)基本设置与类、方法模板设置
- 【CSS】当图片加载缓慢时,图片如何自适应高度
- 在人工智能中对TSP问题的求解
- STM32F1移植到STM32F407 (LD3320)
- tl-wr842n服务器未响应,TL-WR842N路由器怎么重启? 重启路由器的技巧
- 雾霾太大看不清?这里有份数据支持你一键去雾
- mysql atlas 文档_Atlas首页、文档和下载
- 光线追踪(RayTracing)算法
- 【JavaSE】JavaSE之控制逻辑
- 群晖NAS如何开启NTP服务
- Leetcode 77. Combinations 组合
- js原生实现楼梯滚动效果
- 热血江湖服务端开服搭建需要准备什么
- 考研日记-7.28 一念之间
热门文章
- 清除Linux终端命令的历史记录
- [题解]RQNOJ PID85 三个袋子
- Servlet的生命周期 与CGI的区别
- leetcode1509. 三次操作后最大值与最小值的最小差
- 如何成为一个优秀的程序员_如何成为一名优秀的程序员
- 谷歌cloud_通过使用Google Cloud ML大规模提供机器学习模型,我们学到了什么
- github 6月开源项目_我的开源项目如何在短短5天内在GitHub上赢得6,000颗星
- 给matrix重新列名_如何认真升级Mac终端(甚至给它一个Matrix主题)
- 深度学习去燥学习编码_我们问了15,000个人,他们是谁,以及他们如何学习编码
- RSA加密算法简单分析