感觉世界都是约定好的,每门语言的第一个程序总是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. UED双飞翼布局

    <style> body,html { height:%; padding: ; margin: } .main { background: #f2f2f2; width: %; floa ...

  2. 《JavaScript 代码优化指南》

      ~~教你向老鸟一样敲代码~~. 1. 将脚本放在页面的底部 ... <script src="./jquery.min.js"></script> &l ...

  3. Nancy之实现API的功能

    0x01.前言 现阶段,用来实现API的可能大部分用的是ASP.NET Web API或者是ASP.NET MVC,毕竟是微软官方出产的,用的人也多. 但是呢,NancyFx也是一个很不错的选择.毕竟 ...

  4. asp.net实现图片在线上传并在线裁剪

    1.说明 接上一篇文章uploadify实现多附件上传完成后,又突然用到头像上传并在线裁剪.在网上找个众多例子都没有符合要求的,有一篇文章写的不错,就是文旺老兄写的这篇Asp.Net平台下的图片在线裁 ...

  5. CentOS 7 下安装redis步骤

    1. 从redis官网下载redis源码,本例安装在/usr/opt下 [root@localhost opt]# pwd /usr/opt [root@localhost opt]# wget ht ...

  6. session & cookie(li)

    Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...

  7. 使用MyBatis Generator自动创建代码(dao,mapping,poji)

    连接的数据库为SQL server2008,所以需要的文件为sqljdbc4.jar 使用的lib库有: 在lib库目录下新建一个src文件夹用来存放生成的文件,然后新建generatorConfig ...

  8. Egret Wiing3快捷键

    删除当前行 ( Ctrl+Shift+k ),EgretWing2.5下为 Ctrl+D 折叠 ( Ctrl+Shift+[ ) 展开 ( Ctrl+Shift+] ) Ctrl+Shift+P呼出面 ...

  9. 如何为eclipse安装合适版本的python插件pydev

    pydev是一款优秀的Eclipse插件,大多数喜欢在eclipse开发软件的程序员(也许是java程序员)在开发python软件时希望继续使用eclipse,那么pydev是非常理想的选择. 1.安 ...

  10. android okvolley框架搭建

    最近新出了很多好东西都没时间去好好看看,现在得好好复习下了,记下笔记 记得以前用的框架是android-async-http,volley啊,或者其它的,然后后面接着又出了okhttp,retrofi ...