【C/C++语言入门篇】-- HelloWorld思考

本文将从思考的角度去重新认识一下Helloworld。在例子之后会提出不同的问题,引导大家去思考每一句乃至每个细节。同时希望能够让大家以后能够以不断思考不断提问的方式去看待自己的程序。我相信大家会发现很多新的东西,好了切入正题。

我们每学一种新的语言基本都会从helloworld开始,基本每种语言都喜欢将helloworld作为示例直接的表现在读者的面前,让读者在感官上认识一下这种语言的结构,语法格式等。

因此各种各样的helloworld便出来了,比如:WINDOWS程序的HelloWorld,操作系统的Helloworld(简单的独立于OS的一个引导及打印helloworld字样),LUA的HelloWorld(游戏开发常用脚本语言)等等数不胜数。

创一个小群,供大家学习交流聊天

如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀。

也希望大家对学C++能够持之以恒

C++爱好群,

如果你想要学好C++最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组织:快乐学习C++组织 可以点击组织二字,可以直达

今天我们就从CC++的helloworld进行探讨。首先写俩例子:

C语言版:

#include <stdio.h>

int main( void )

{

     printf( "Hello World!" );

     return 0;

}

C++版:

#include <iostream>

using namespace std;

int main( void )

{

     cout << "Hello World!" << endl;

     return 0;

}

首先,请大家纠正自己的编码格式,保持每行基本都有独立的事情,不要写成这样:

#include <stdio.h>

main()

{ printf( "Hello World!" );

     return 0;}

这样一来,假如是上百万行代码的项目,我想你也不想看自己写的代码,编码习惯好对自己调试及纠错都有好处,在大型的项目中都是分工合作的,假如你的代码格式很差将对别人的工作量造成影响。你在项目中的地位也将受到影响,最直接的就是影响到你的薪资。

其次,我们先看C语言版的,这是一个最简单的程序,就只有一句打印。输出的内容就是Hello World!我相信大家都知道。那我现在在这里提几个问题:

1. main函数是否一定得有返回值?

2. main函数是否可以有参数?

3. 为什么是return 0?

4. 为什么要引用stdio.h头文件? 自己是否可以写头文件?

5. printf是否可以有多个参数?假如能,为什么能有多个? 是怎么实现的?我们可否自己写一个?

6. printf是通过什么形式将"Hello World!"字符串传入的?

7. #include <stdio.h>可否替换成#include "stdio.h" ?

好了,暂时提出这几个问题。大家可以看到,简简单单的HelloWorld程序也能提出这么多问题,是不是用思考的方式去看待程序将收获不少?我们再来一一回答这些问题:

1. main函数可以不写返回值,比如:void main(){} 甚至 main(){}。 不过不推荐前面两种形式。原因在于,main函数的返回值为0表示执行完整个main函数没有问题,成功返回。

同时在main函数的上一层调用将会取到main函数的返回值,进行一些系统的处理(这里暂时不详解)。看似没必要的东西通常被我们忽略。作为程序员的我们,我想应该在做事的时候要有追求完美的观念。因此main函数建议写上返回值。

2. main函数可以有参数。比如:int main( int _Argc, char** _Argv, char ** _Env ); _Argc 是指命令行输入参数的个数,_Argv存储了所有的命令行参数。_Env表示环境相关。同时也可以定义成:int main( int _Argc, char** _Argv ); 比如:

你的程序是hello.exe。传命令行参数:

hello.exe Shiqi Yu

那么,_Argc的值是 3,_Argv[0]是"hello.exe",_Argv[1]是"Shiqi",_Argv[2]是"Yu"。 _Env[0]就是你当前管理员账户所拥有的文件夹路径,可以调试的时候观察(在后面的文章里专门讲调试技巧相关)。这里有指针及字符串数组。以后再给大家深入解释。

3. 返回0表示程序正常退出。

4. 引用stdio.h是为了调用printf函数。此函数声明在这个头文件里。

5. 这个问题留给大家思考。

6. 这个问题也留给大家思考。

7. 可以替换,我们在编译程序的时候,编译器会自动去查找你所引用的这些头文件。<>表示优先从系统的库里面查找此头文件,未找到再到用户代码目录里查找。""刚好相反。

还有更多的问题或者疑问,大家可以继续去想,首先养成了思考的习惯。进步就很快了。

再看C++版的,也是一个简单的例子,同样是打印一句Hello World!再提出几个问题:

1. #include <iostream>为什么没有.h?

2. using namespace std;这句为什么?作用是什么?

3. 这里的Hello World!字符串又是怎么传入函数的?还是并没有传入函数?

4. cout在这里起什么作用? <<又起什么作用?

5. endl起什么作用?

C++跟C的语法相差不大,这里只提出了5个问题,相同的可以提出的问题已经在C语言版里提出了。两个版本有的问题同时有效。再来答这几个问题:

1. 在VC6以后的C++版本,VC的库目录里增加了一些新的头文件,这些头文件没有扩展名(分类一多,为了区分(各人认为))。因此就没有.h了。

2. 这里是名字空间的引用,名字空间也就是为了防止在不同的CPP或者H中发现同名字的函数,为了区分,就在这些函数或者类等外面加上一个名字空间以示区分,假如没有这句,下面的语句将得这样写:

std::cout << "Hello World!" << std::endl; 假如在另外一个名字空间masefee里面同样有同名字的函数,我们就得写:masefee::cout << "Hello World!" << masefee::endl;了。

3. 这个问题在解决了上面C语言版的问题6自然会解答了。

4.cout其实是ostream,也就是输出流。<<就是重载运算符,通过传参数的形式将需要输出的内容传入<<运算符里。然后进行输出。

5.endl就是回车符。换行用。


好了,这两个程序解答完了,相信大家已经有感觉了。思考真的会带来无限的收获。也希望大家有新的发现及想法,并告诉给我。让我们共同进步!

除了上面两个红色的问题,另外再提出几个问题:

1. C++中的重载是什么意思?

2. C++中怎么重载运算符?

3. 了解下编译器的堆栈调用窗口。

4. 怎么在编译器里面设置给程序传命令行参数?命令行参数在实际中有什么运用?

然后今天就讲到这里啦,大家记得点赞收藏,分享转发,关注小姐姐哦!

                                                       END

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

推荐阅读更多精彩内容