C++入门系列博客一 最初的起点 — Hello World

最初的起点 — Hello World


作者:AceTan,转载请标明出处!


一切的开始

大概每个程序猿的第一个程序都是Hello World,这是梦开始的地方。本文是C++入门系列博客的第一篇,让我们从最经典的Hello World 开始。看代码

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World" << endl;

    return 0;
}

现在,我们逐行分析一下这一段经典代码。


#include <iostream>

#include 指令用来包含程序所用到的头文件。这里告诉编译器想要使用的是 iostream 库, 尖括号中的名字指出了头文件的名字。需要注意的是,#include指令和头文件的名字必须 放在同一行。我们一般将#include指令放在源文件开始的位置。另外,一般<>引用的都是标准的库文件,如果使用自己写的头文件,一般使用"", 而非<>. 例如: #include "myHeader.h", ""之中是所要使用的头文件位置,可以加路径。不加路径默认是当前文件路径。关于标准输入输出流iostream读者可以参看相关文档,这里不展开讲。


using namespace std;

这句代码的意思是使用标准的命名空间。 using 关键字一般用来声明某个命名空间,也叫作 using 声明(using declaration). using声明的形式如下:

using namespace::name;

namespace叫做命名空间,命名空间的作用是避免我们名字定义冲突。举个例子,你的小名叫小明,你隔壁王叔叔的儿子小名也就小明,当你们一起玩耍时,别人喊小明,你们就不确定喊的是谁了,傻傻的计算机更分不清。所以就需要命名空间来指定到底喊的是谁了,像这样 王叔叔::小明 那就表明喊的是王叔叔家的小明了。这个::叫做作用域运算符。标准库定义的所有名字都在命名空间std中。


int main(){}

每个C++程序必须包含一个或多个函数,其中一个必须命名为main,操作系统通过main来运行C++程序,它为程序入口。 一个函数的定义分为四个部分,返回类型(return type)、函数名(function name)、形参列表(parameter list)、函数体(function body). 此处返回类型为int,函数名为main,形参列表为空,函数体为{}包括起来的内容。

main函数的返回类型必须为int,即整数类型,int 类型是一种内置类型,即语言自身定义的类型。

你也许表示不服,我明明看过main函数的返回值可以为void的。这其实是一种不标准的做法,在VC、VS的编译器能编译通过,但在其他标准的编译器下,就编译不过了。不信你试试gcc编译器。


cout << "Hello World" << endl;

cout 标准输出对象,名字定义在std命名空间下。cout标准输出(standard output),与之对应的还有标准输入(standard input) cin. 除此之外,比较不常用的还有cerr, clog. 顾名思义,看名字基本上就能知道它是干嘛的了。

<< 为 输出运算符, 这个运算符接受两个运算对象,左侧的对象必须是一个ostream对象,右侧运算符是要打印的值。
endl 为操纵符,表示换行。 与转义字符"\n"是一样的。


return 0;

main函数的返回值。

在大多数的系统中,main函数的返回值用来指示状态,返回0表示成功,非0的返回值的含义由系统定义,通常用来指出错误类型。

编程工具

工欲善其事,必先利其器

编程工具这东西各有所好,推荐几款,是笔者比较常用和喜爱的。

  • VS系列
  • Code::Blocks
  • Sublime Text

重量级的IDE还是力推Visual Studio,至于版本,推荐使用VS2010及以上。个人编程的话,建议直接上VS2015,VS2015号称全宇宙最强的IDE,各方面功能不是盖的,其他IDE望尘莫及。笔者强烈建议不使用VC6.0,这坑爹玩意用的根本不是标准的语法,最恶心的就是它变量的作用域了。VC6.0已经被时代淘汰,虽然国内很多教材的实例都是用VC6.0写的。

轻量级的IDE推荐Code::Blocks,虽然功能不如VS强大,好在它是跨平台的IDE,各方面功能做的也不错。长期刷题的童鞋们可以使用看看。

如果你写的是小型程序,或者觉得自己足够牛逼,不需要任何IDE,那么,我推荐这款Sublime Text编辑器了,它支持语法高亮,Sumlime Text是程序猿最喜欢用的编辑器之一了。谁用谁知道。上个图感受一下。

Sublime Text

当然,如果你是Linux用户,并长期使用Vim,那么我觉得,很难再有编辑器入的了你的法眼了。

书籍推荐:

对,你没看错,我就推荐这一本。学习完并掌握这本书的知识点,找个C++相关编程工作完全没有问题。这本书基本上是C++中圣经级别的存在了,而且,它还比较适合初学者。学习C++的首选,它包罗万象,还可以当工具书来翻阅。C++程序猿基本上人手一本。

黑魔法

如果你觉得上面的程序足够简单,根本不屑一顾,那么看下面两个Hello World,是否会觉得眼前一亮呢?

  1. 外星人说的"Hello World".

     #include <iostream>
     
     using namespace std;
     
     void alien_say(char * p)
     {
         while (putchar(*(p += *(p + 1) - *p)));
     }
     
     int main()
     {
         return alien_say("BETHO! Altec oh liryom(a loadjudas!) dowd."), 0;
     }
    
  2. 预处理迭代的"Hello World"

     #define _________ } 
     #define ________ putchar 
     #define _______ main 
     #define _(a) ________(a); 
     #define ______ _______(){ 
     #define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C) 
     #define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F) 
     #define ____ _(0x72)_(0x6C)_(0x64)_(0x21) 
     #define _____ __ ___ ____ _________ 
     #include<stdio.h> 
     _____
    

以上两段代码作者不详,侵删。
实现原理就不一一说了,但请注意,在实际工作中,千万不要写这种技巧性很高的代码,不然被你同事打死都不知道是怎么回事,切记,切记。

结束语

以"Hello World"开启代码人生,后面的路还有很长。我们的征途是星辰大海。

代码人生
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容