本次正式开始记录我学习c++的全部过程,包含我的学习思路,问题的解决,以及从我自己视角出发学习和理解c++的角度等等都会被我详细的记录下来。希望我可以在c++的学习中有所收获。
首先我并非完全的小白,我学习过c语言,java。也写过python,lua这样的脚本语言。同时刷题的时候也让我认识了php,js等等。所以从我的学习角度出发可能会有类比其他语言的思想来帮助我理解和学习c++,如果有错误的理解恳请大佬及时指出,以尽量阻止本文再对其他学习c++的朋友造成误解。
现在先请出我们今天所要编写的简单程序代码:
#includeusing namespace std; int main() { cout << "Hello, world!" << endl; return 0; }
下面让我简单介绍一下这些代码的具体含义。
#include
学习过c语言的朋友应该对#include并不陌生,这是包含了一个头文件,头文件中的函数就可以在当前代码页中使用。但是对于第一次接触c++的朋友来说这是一个比较难以理解的问题,我会尽量说的详细一些以帮助大家理解。
include(翻译:包括)顾名思义,就是指包括了一个什么东西,包括了一个iostream的东西,我们暂且不探究这是一个什么东西,你只需要知道这是在说当前文件中包括了iostream这个东西。那么包括了iostream又代表了什么呢?包括了iostream就表明,你现在可以在当前文件中随意使用iostream,以及iostream里的所有内容。如果你学习过python或java那么你可以简单的、暂且的理解为import,如果你学习过lua那么你可以暂且理解为require或者import。都是指你可以在当前代码文件中使用其中的内容。
那么我们现在重新理解一下这段代码,即包含一个文件iostream我可以在当前文件中使用iostream中的所有内容。
而最为正确的理解#include这其实是preprocess的一个命令,是一条包含命令。可能又有人要问了,那什么是preprocess呢?我们今天就不说的过于详细了,这就是c++不同于其它语言的原因,就这么一行代码,几乎所有的c++程序中都是必须的一行代码,其后的深度却足以令绝大多数人胆寒。我会在之后单独写一篇文章,简单的讲解一下,我也不是完全理解,感兴趣的朋友可以自行百度进行查阅。
那么这里有三件事情需要说一下,第一写过c语言的人都知道声明头文件,头文件都是以.h结尾的例如#include
1、c++头文件.h和没有.h的区别:
我在c++学习笔记(一)中就有提到过c++是在c语言的基础上增加面向对象的编程功能,同时修改了一些c语言的一些不方便的设定,那么更为详细解释就附上大佬的文章。
(37条消息) C/C++头文件.h和没有.h的区别_zjllike的专栏-CSDN博客
2、include 头文件时 <> 和 "" 的区别:
<>:会先去系统目录中找头文件,如果没有找到再去当前目录下寻找,像是标准的头文件,如 stdio.h,stdlib.h 使用这个方法。
"":会先在当前目录下寻找,如果找不到再去系统目录下寻找,适用于自己定义的头文件
3、.cpp 文件和 .h 文件的区别:
.cpp文件用于存放类的定义 definition,.h 文件用于存放类的声明 declaration。
在头文件中声明了一个函数或者类,需要定义或者使用这个函数或者类时,需要在 cpp 文件中 include 这个头文件。
那么第一行代码我们算是大致的讲解了一下,第二行代码也在上文的链接中提到,就是使用了一个命名空间,名为std,主要是用于避免命名重复而诞生的。就像是全局变量和局部变量的区别。std::cout就是说明在std命名空间中有一个名为cout的对象(实际就是变量),cout是c++标准库中的一个类的对象,是c++提供的IO机制,即输入输出机制。所以要想使用这个cout就需要加上std::,可以理解为是一个只在std下的局部变量,而std在iostream头文件中好比是一个全局变量。
写下第二行代码后,就可以在整个代码文件中直接使用cout,endl等对象,而不用写成std::cout、std::endl。这样做的弊端就是,在大型项目的时候容易造成自己定义的某个函数,名称正好和std中的一样, 编译器会不知道使用哪一个, 从而引起编译报错。
int main()
{
}
main主函数在c语言或者java中都知道这是代码执行的入口函数,只有写了main函数程序才知道应该从哪里开始执行代码,然后开始逐行执行main中的代码,而非从整个代码文件的第一行开始逐行执行。int是数据类型中的整数型,这里是定义main函数的类型为int类型。不要忘记了大括号哦,这是c++的函数语法哦。
cout << "Hello, world!" << endl;
<<是一种流操作符,cout和endl都是一种流,这个我们后面会再详细的说。现在你只需要知道cout代表输出,endl代表换行并刷新缓冲区使栈中的东西刷新一次,你可以理解为释放内存,如果不理解缓冲区和栈的概念我会在之后再详细讲解。
所以这行代码的含义就是输出一行字符串并换行。
简单提一下,IO机制就是输入输出机制,英文就是in和out,而c++中的cin是输入,cout是输出,为什么加上了一个c,这是为了说明这是沿用了c语言而特意加上的。
return 0;
return(翻译:返回)返回一个数字0,我们的main函数是一个int类型,简单提一下,int就是integer整数的意思,在整个代码执行结束后,我们需要返回一个值,以表示整个代码的执行完毕,告诉编译器代码到这里就执行完毕了,然后系统就会退出这个函数,继而退出整个文件,结束程序运行。
注意不要忘记了每一个c++语句都需要在结尾处写一个分号,本文程序除了包含头文件、定义函数之外都需要加上分号,以后遇到和书写的更多之后你会很清楚什么时候应该打分号,什么时候不需要。
今天这个程序你是否都理解了呢,至少你是否都明白了每行代码在做些什么呢。



