第一篇文章终于落笔了,本文将从思考的角度去重新认识一下Helloworld。在例子之后会提出不同的问题,引导大家去思考每一句乃至每个细节。同时希望能够让大家以后能够以不断思考不断提问的方式去看待自己的程序。我相信大家会发现很多新的东西,好了切入正题。
我们每学一种新的语言基本都会从helloworld开始,基本每种语言都喜欢将helloworld作为示例直接的表现在读者的面前,让读者在感官上认识一下这种语言的结构,语法格式等。因此各种各样的helloworld便出来了,比如:WINDOWS程序的HelloWorld,操作系统的Helloworld(简单的独立于OS的一个引导及打印helloworld字样),LUA的HelloWorld(游戏开发常用脚本语言)等等数不胜数。今天我们就从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. 怎么在编译器里面设置给程序传命令行参数?命令行参数在实际中有什么运用?
好了。这些问题会在大家回复之后,在怪兽群里密我。我会逐一解答。同时在文章数量及问题数量累计到一定数目的时候,统一进行解答。这样做也是为了能够监督一下大家。嘿嘿!望理解!欢迎大牛拍砖。。
【C/C++入门篇系列】
【C/C++语言入门篇】-- 序言
【C/C++语言入门篇】-- HelloWorld思考
【C/C++语言入门篇】-- 基本数据类型
【C/C++语言入门篇】-- 调试基础
【C/C++语言入门篇】-- 深入指针
【C/C++语言入门篇】-- 数组与指针
【C/C++语言入门篇】-- 结构体
【C/C++语言入门篇】-- 深入函数
【C/C++语言入门篇】-- 位运算
【C/C++语言入门篇】-- 剖析浮点数
【C/C++语言入门篇】-- 文件操作
分享到:
相关推荐
所以有一定C/C++语言基础理解和掌握Objective-C也会相应的快些。这回,我们将比较着学习 Objective-C语言,掌握其语法并理解其思想。 语法 让我们先来看看C++和Objective-C中对于类的宣言 : C++ #...
Eclipse 是一个强大的开源集成开发环境(IDE),广泛用于Java应用程序的开发,但它同样支持其他编程语言,包括C和C++。CDT(C/C++ Development Tooling)是Eclipse的一个插件集,专为C和C++开发者提供了一整套的开发...
C/C++语言编程安全子集
【C/C++面试题大全--96页】这篇文章主要探讨了C/C++编程语言中面试时常见的技术问题,特别是关于字符串处理和内存管理的题目。文章的目的是通过深入解析这些问题来提升面试者的技能水平和对基础知识的理解。 首先,...
标题“MATLAB Support for MinGW-w64 C/C++/Fortran Compiler”涉及的主要知识点是MATLAB编程环境与MinGW-w64编译器的集成,以及对C、C++和Fortran语言的支持。 MATLAB是一款强大的数学计算软件,广泛用于科学计算...
不错的c语言c++语言课程设计项目--职工工作量统计系统 不错的c语言c++语言课程设计项目--职工工作量统计系统 不错的c语言c++语言课程设计项目--职工工作量统计系统 不错的c语言c++语言课程设计项目--职工工作量统计...
不错的c语言c++语言课程设计项目--学生成绩管理系统 不错的c语言c++语言课程设计项目--学生成绩管理系统 不错的c语言c++语言课程设计项目--学生成绩管理系统 不错的c语言c++语言课程设计项目--学生成绩管理系统 不错...
c/c++语言程序-哈希查找
C/C++编程规范 C/C++编程规范是软件开发过程中不可或缺的一部分,对于编写高质量的C/C++代码非常重要。北京软通动力信息技术有限公司编写的C/C++编程规范文档,旨在为程序员提供统一的编程标准,提高代码的可读性、...
《C/C++程序设计教程-1.ppt》是一个详细的教学文档,涵盖了C/C++编程的基础知识,包括计算机系统组成、程序设计语言的发展历程以及C语言的特点和程序结构。以下是这个教程中涉及的重要知识点的详细说明: 1. 计算机...
C/C++ 语言参考 基本C/C++ 预处理命令 操作符优先级 转义字符 ASCII码表 基本数据类型 关键字 标准 C 库: Standard C I/O Standard C String & Character Standard C Math Standard C Time & Date ...
资源是笔者在MATLAB里面安装的MinGW-w64 C/C++编译器安装包,主要用于作为博文https://blog.csdn.net/jiqiren_dasheng/article/details/103759720的资源附件。(声明:上传时积分设置的1,如果数值后续变了,就是...
C++ 入门基础教程 .rar http://down.qiannao.com/space/file/yuexingchen2/-4e0a-4f20-5206-4eab/C-002b-002b-0020-0020-00b7C-0020-0020vc/C-002b-002b-0020-5165-95e8-57fa-7840-6559-7a0b-0020.rar/.page C++...
c/c++语言程序-停车场管理源码
1. **C语言与C++支持**:Dev-C++不仅支持C语言,还支持C++编程,使得用户可以在同一环境中进行两种语言的开发工作。C语言是一种结构化编程语言,适用于系统编程和嵌入式系统开发;而C++则在C的基础上增加了面向对象...
C-Free 是一款专为初学者设计的C语言和C++编译器,它融合了这两种编程语言的编译功能,提供了一个易于上手、功能全面的开发环境。这款软件的出现,使得初学者在学习编程的过程中可以更专注于代码本身,而不用过于...
Dev-C++是一款免费、开源、轻量级的C/C++集成开发环境(IDE),专为学习及小型项目开发设计。它集成了代码编辑、编译、调试等功能于一体,界面友好,操作简便,适合从入门到进阶的编程爱好者使用。支持多种编译器...
《C/C++语言参考》是一本为C/C++程序员提供详尽语言特性和标准库信息的重要参考资料。CHM(Compiled Help Manual)格式是微软开发的帮助文档格式,它将多个HTML页面打包成一个单一的文件,方便用户离线浏览。这个CHM...
eating.cpp : Defines the class behaviors for the application eating.cpp : Defines the class behaviors for the application