感觉世界都是约定好的,每门语言的第一个程序总是Hello World!但是也有一些书似乎是在追求个性,会用一些其他的,但是是Not Hello World!本人需要再学习一下C++,所以从最基础的开始。世间万物Hello World:

 // helloworld.cpp
#include <iostream>
using namespace std; int main()
{
cout << "Hello World!" << endl;
return ;
}

  这可能是最简单一个程序了,仅仅是向屏幕打印“Hello World!”这一信息。但其中包含了很多概念:

  • 注释
  • 预处理指令
  • main()函数
  • 输入/输出流

1.注释

  程序第一行为一行注释,以供程序员阅读,编译器会呼略。C++中有两种注释方法:

 //注释
/*注释*/

  使用注释的主要原因:

  (1)说明用途

  解释程序代码中函数作用,包括参数意义,返回值等信息。

  (2)说明复杂代码

  对于控制台的简单程序中,代码阅读可能相对容易一些,但是在一些专业领域,代码可能复杂而深奥,如下代码:

 void sort(int inArray[], int inSize)
{
for (int i = ; i < inSize; i++)
{
int element = inArray[i];
int j = i - ;
while (j >= && inArray[j] > element)
{
inArray[j + ] = inArray[j];
j--;
}
inArray[j + ] = element;
}
}

  这是一个排序算法,通过添加注释可以解释内部的一些令人迷惑的代码。

  (3)传递元信息

  提供创建代码的详细信息,但不涉及代码的特定行为,如加入作者信息,创建日期等等。

2.预处理指令

  生成一个C++程序有三个步骤。首先,代码在预处理器中运行,预处理器识别代码中的元信息。随后,代码被编译或转换为计算机可识别的目标文件。最后,通过链接变成一个应用程序。预处理命令以#开始,第一个程序中的#include <iostream>便是,意思是提取<iostream>头文件的内容给当前文件。如果不包含这个头文件,甚至无法完成输出文本的任务。

常见的预处理指令:

预处理指令 功能
#include [file]

指定的文件插入到代码中指令所在的位置

#define [key][value] 每个制定的key被替换为指定的值

#ifdef[key]

#ifndef[key]

#endif

在ifdef块或ifndef块中的代码被有条件的

包含或者舍弃,这取决于是否使用#define

定义了指定的key

#prama [xyz]

xyz因编译器而异。如果预处理期间执行到这

一指令,通常会显示警告或错误信息

  以下是使用预处理器指令避免重复包含:

 #ifndef HEADER_H_
#define HEADER_H_
// .........................
#endif

  若编译器支持#pragma once指令,可用下面代码重写上面的代码:

 #pragma once
// ..........................

3.main()函数

  main()是程序的入口。其返回值是一个int类型,指示程序的最终运行状态。可以有参数,也可以有两个参数:

int main(int argc, cha *argv[])

  其中argc给出传递给程序的参数数目,argv包含这些参数。

4.输入/输出流

  基本的输出流是std::cout,此外还有std:cerr。<<将数据插入到流中。std::endl代表序列的结尾,当输出流遇到std::endl时,就会将所有内容输出并转移到下一行。还有\n也可以。\n是一个转义字符,是一个换行符。下面是最常见的转义字符:

\n    换行

\r     回车

\t     制表符

\\     反斜杠符

\"     引号

  流也可以接受用户输入,最简单的是使用>>。std::cin输入流接受用户键盘输入。

参考:

Marc Gregoire, Nicholas A. Solter, Scott J. Kleper, C++高级编程,清华大学出版社,2012,ISBN:978-7-302-29897-7

C++知识回顾(一)的更多相关文章

  1. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  2. [C#] C# 知识回顾 - 学会处理异常

    学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...

  3. [C#] C# 知识回顾 - 学会使用异常

    学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...

  4. [C#] C# 知识回顾 - 异常介绍

    异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...

  5. [.NET] C# 知识回顾 - Event 事件

    C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...

  6. [.NET] C# 知识回顾 - 事件入门

    C# 知识回顾 - 事件入门 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6057301.html 序 之前通过<C# 知识回顾 - 委托 de ...

  7. [.NET] C# 知识回顾 - 委托 delegate (续)

    C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...

  8. [C#] C# 知识回顾 - 委托 delegate

    C# 知识回顾 - 委托 delegate [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6031892.html 目录 What's 委托 委托的属性 ...

  9. [C#] C# 知识回顾 - 序列化

    C# 知识回顾 -  序列化 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902005.html 目录 序列化的含义 通过序列化保存对象数据 众 ...

  10. [C#] C# 知识回顾 - 表达式树 Expression Trees

    C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...

随机推荐

  1. Vmware虚拟机安装Ubuntu并设置root登陆

    主机操作系统是win7.在Ubuntu官网下好系统镜像.iso文件,安装好Vmware workstation软件 1 安装Ubuntu系统到Vmware虚拟机: 注意下面这步是无法直接设置账号为ro ...

  2. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 4 - 验证

    验证: 快要完成我们程序的界面部分了.剩下的事情就是在用户点击 "保存" 的时候管理验证问题了.验证是主要需求,今天就是最无知的应用也不会忽视它.通过正确的验证,用户可以知道应该输 ...

  3. 如何在一个页面添加多个不同的kindeditor编辑器

    kindeditor官方下载地址:http://kindeditor.net/down.php    (入门必看)kindeditor官方文档:http://kindeditor.net/doc.ph ...

  4. Java核心技术点之多线程

    学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:279558494 我们一起学Java! 本文主要从整体上介绍Java中的多线程技术, ...

  5. jquery对单选和下拉框的操作

    jquery 对表单的操作: 对单选框的操作: 一.对单选框的操作: 1.$('input

  6. Linux文件管理命令笔记

    more\less:翻页命令 more:翻页的形式查看文件内容.该命令可作为管道命令. 翻页过程可使用的键: 空格(space):向下翻页: 回车(Enter):向下翻一行: b:往回翻,只限,但管道 ...

  7. JqueryDataTable的使用(.Net平台)

    上一篇随笔提到了MvcPager,最近用到了一款前端JQ插件------DataTable(简称DT),很好用. DT是一款前端插件,和后端完全分离开,就这点来看,我就特别喜欢. 一.使用DT,需要以 ...

  8. iOS 浅复制和深复制的深层理解,含示例

    转载:https://www.zybuluo.com/MicroCai/note/50592 版权归 @MicroCai 所有 以下是正文: 浅复制就是指针拷贝:深复制就是内容拷贝. 集合的浅复制 ( ...

  9. ubuntu无限卡在logo界面

    ubuntu默认的是lightdm显示管理器,GDM就是Gnome display manager,lightdm是ubuntu开发的代替gdm的显示管理器.如果ubuntu进不去图形界面,除了重新安 ...

  10. 一枚招聘信息——微信支付web前端开发工程师【已招到】

    已招到 工作地点: 深圳 职位类别: 技术类 招聘人数: 1人 工作职责: 负责微信支付h5应用产品的前端开发:负责微信支付营销活动,h5游戏的开发:负责微信支付内部平台的开发与日常维护 工作要求: ...