C++知识回顾(一)
感觉世界都是约定好的,每门语言的第一个程序总是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++知识回顾(一)的更多相关文章
- [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?
你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...
- [C#] C# 知识回顾 - 学会处理异常
学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...
- [C#] C# 知识回顾 - 学会使用异常
学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...
- [C#] C# 知识回顾 - 异常介绍
异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...
- [.NET] C# 知识回顾 - Event 事件
C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...
- [.NET] C# 知识回顾 - 事件入门
C# 知识回顾 - 事件入门 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6057301.html 序 之前通过<C# 知识回顾 - 委托 de ...
- [.NET] C# 知识回顾 - 委托 delegate (续)
C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...
- [C#] C# 知识回顾 - 委托 delegate
C# 知识回顾 - 委托 delegate [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6031892.html 目录 What's 委托 委托的属性 ...
- [C#] C# 知识回顾 - 序列化
C# 知识回顾 - 序列化 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902005.html 目录 序列化的含义 通过序列化保存对象数据 众 ...
- [C#] C# 知识回顾 - 表达式树 Expression Trees
C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...
随机推荐
- Java 单例模式详解
概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例.饿汉式单例.登记式单例三种. 单例模式有一下特点: 1.单例类只能有一个实例. 2.单例类必须自己自己创建自己的唯一实例. ...
- java反射复制属性值
/** 将sourceObj的属性拷贝到targetObj * @param sourceObj * @param targetObj * @param clazz 从哪一个类开始(比如sourceO ...
- GJM :Unity使用EasyAR实现脱卡功能
首先说下大致思路当卡片离开摄像头时间,ImageTarget-Image的SetActive (false),所以其子物体(model)也就不显示了,因此解决的办法就是在Target (false)时 ...
- 5.2 Array类型介绍
Array类型是数组类型,Array(数组)类型也是引用类型中的一种. js 数组中的每一项可以保存任何类型的数据. js数组的大小/长度是可以动态调整的.如果你往数组中添加数据,数组长度会自动增加. ...
- cookie入门
据我对cookie诞生背景的了解,cookie是由网景公司创建的,目的就是将用户的数据储存在客户端上.伴随的HTML5的出现,现在又有另外一个解决数据离线储存的方案,就是HTML5中的Web stor ...
- iOS之数据解析时<null>的处理
在iOS开发过程中经常需要与服务器进行数据通讯,JSON就是一种常用的高效简洁的数据格式. 问题: 在项目中,一直遇到一个坑的问题,程序在获取某些数据之后莫名崩溃.原因是:由于服务器的数据库中有些字段 ...
- 原创炫酷代码公开——连接董铂然github
公开了github部分项目(均为原创)更多代码请看https://github.com/dsxNiubility SXWaveAnimate Wonderful SXPhotoShow SXNews ...
- [swift]NSURLSession
一.简单说明 在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作. NSURLSession ...
- 在Ubuntu和Linux Mint上安装Oracle JDK
在Ubuntu和Linux Mint上安装Oracle JDK 使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好: sudo add-apt-repository ...
- vim的高亮查找操作
使用了VIM这么久,却一直无法牢记一些基本的操作指令.今天查找一个关键字时,想不起来怎么查找“下一个”,于是google之并解决,顺便把有用的都贴过来罢. 查找指令:/xxx 往下查找?xxx 往上 ...