C++学习 之 初识C++

声明
            本人自学C++, 没有计算机基础,在学习的过程难免会出现理解错误,出现风马牛不相及的现象,甚至有可能会贻笑大方。 如果有幸C++大牛能够扫到本人的博客,诚心希望大牛能给予批评与指正!不胜感激!
            学习的过程分为初识、入门、进阶三个阶段。
            因为对C++没有什么了解,自己的学习设定可能也有失准确性。望兄弟们多指点。谢谢!



我不是一个计算机专业毕业的学生。可是毕业后各种机缘巧合,我走上了IT这条路。工作中,越来越多的发现自己知识的不足。于是很早以前就给自己定了计划, 要学习C++。要会开发 。不会开发的DBA,不是一个好的DBA哈哈,我一直坚信这句话。其实吧, 一开始的时候,我说的开发指的是Oracle 开发 ,至于这里嘛,直接拿来套用下,哈哈。来,哥们儿姐们儿们,有想学C++开发 的,来跟哥一起开始这条不归路吧。哈哈。。。。。以前都觉得自己还小,现在一说话就是哥~,哎真的老了啊。。。

在开始以前呢,先说入门C++要看哪本书吧。首先要推选的必然是“The C++ programming language”,这是C++之父B.S 的作品,绝对的权威,所谓知子莫若父嘛。哈哈。第二本,经过时间的淘沙,经过广大人民群众雪亮的眼睛的挑剔,最终留下这么一本:“C++ Primer”,绝对的经典,入门的好书。我目前的学习,就是通过看这本书结合视频来学习C++的,当然我不是名人,也没什么权威。从哪本书开始学,完全 看自己的,如果你觉得有其他更好的,也欢迎来跟我交流下,让我也一暏为快哈。
              
那么开始吧!

首先,初识C++时,直接来一些理论么?什么叫函数?什么叫命名空间?什么叫指针? 我不这样想,我觉得实例+理论结合起来理解,最容易接受。如果一上来就直抒胸臆,侃侃而谈这些理论,估计我写不完就睡死过去了~

来吧,我们直接开始 了。

一、 最简单的C++程序

来揭开C++神秘的面纱,先来一个最简单的C++程序,也是学任何一门开发语言,开门见山要写的一个东西:Hello world!

先来看看C++ 源代码:

#include <iostream>
intmain()
{
std::cout<<"Hello world!"<<std::endl;
}

 

再来看看我这个代码编译完成后,执行会有什么。可是怎么编译呢?
我们要知道C++源代码,是人使用的代码,并不是机器可以直接使用的代码。你问我机器直接使用的代码是啥 ? 哦,好好回想下,发现那是好遥远的东西啊。。。是“1 0 ”这两个数字。。。嘿嘿,也就是二进制了。这里不讨论二进制这么复杂的东东哈
那么我们如何把我们人使用的代码转化成机器可以识别的代码呢?G++闪亮登场~哈哈。
g++是C++的编译工具。如果你学习C语言,那么你肯定很熟悉GCC,他们 都是编译器,可以将人能读懂的代码转换成机器能读懂的代码。用法也是一样的。
最常用的使用方法 就是g++ '源代码文件' -o '输出文件'
如果上面只使用g++ '源代码文件' 也是没问题的,会生成一个默认文件:a.out

编译:

halberd:/home/C++ # g++ ./hello.cpp       
linux-emf1:/home/C++ # g++ ./hello.cpp -o hello
halberd:/home/C++ # ls -la
-rw-r--r-- 1 root root 1782257 Jun 11 16:49 C++ Primer.4th.chm
-rw-r--r-- 1 root root     242 Jun 22 03:14 test.cpp
-rw-r--r-- 1 root root   13304 Jun 23 07:53 C++学习笔记
-rw-r--r-- 1 root root      93 Jun 23 21:23 hello.cpp
-rwxr-xr-x 1 root root   13154 Jun 23 21:23 a.out 
-rwxr-xr-x 1 root root   13154 Jun 23 21:24 hello   

 

                     

  • 这里要注意啊,C++的编译器是G++,而C的编译器是GCC,别弄错了,不然你会发现,明明代码写对了,但是编译就是报错

执行:

halberd:/home/C++ # ./a.out
Hello world!
linux-emf1:/home/C++ # ./hello
Hello world!
linux-emf1:/home/C++ # 

 



正常执行了, 哈哈。说明这个最简单的C++源代码,还是正确的。太神奇了~

嘿嘿,我突发奇想,想看看a.out 里面到底是啥东西,为啥要经过g++编译就会生成这样一个文件呢?

linux-emf1:/home/C++ # strings a.out
/lib64/ld-linux-x86-64.so.2
libstdc++.so.6
__gmon_start__
_Jv_RegisterClasses
_ITM_deregisterTMCloneTable
_ITM_registerTMCloneTable
_ZNSt8ios_base4InitD1Ev
_ZSt4cout
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
_ZNSolsEPFRSoS_E
_ZNSt8ios_base4InitC1Ev
libm.so.6
libgcc_s.so.1
libc.so.6
__cxa_atexit
__libc_start_main
GLIBC_2.2.5
GLIBCXX_3.4
UH-h
UH-h
[]A\A]A^A_
Hello world!
;*3$"

 


XX,除了“Hello world!” 其他全不认识。。。。我瞬间放弃了。。。。。。



二、 C++程序的最基本组成结构

其实学过开发的人都知道,"hello wold" 程序要正常运行,首先源代码中必然包含一种语言代码正常运行的必要组件,或者说结构是完整的。而“Hello world”在所有语言中关键点都只是调用了该语言的输出函数
那么C++程序的源代码正常运行,必需有哪些结构组成呢?

#include <iostream>                      /*这一行,是在调用C++的头文件,include 也就是包含的意思,也就是说,C++程序的运行必需包含至少一个头文件才可以正常运行。至于什么是头文件,头文件的作用等等,你别想太多,我脑子慢跟不上 你,一会儿咱                                           再学习。*/
intmain()                               /*这一行 有个int ,这个是干嘛的?先在这里简单说一下,int 是C++的一个内置数据类型--整型,小心啊,不是整形~咱不学棒子~ int后面跟一个main(),如果你学过一种编程语言,哪怕 只是个shell ,看到                                             main后面的小()还有下面的{},应该意识到,这 是一个函数了吧?,嘿嘿。关于main函数,是C++运行必要的一个组成部分,每个 C++程序中必然包含main函数。*/
{                                       //函数体开始
std::cout<<"Hello world!"<<std::endl;  /*这一行是hello world 的关键所在 ,调用命名空间的cout,将\"Hello world!\"输出到屏蔽。没接触过C++的是不是又迷茫了,啥叫命名空间啊?哈哈我好有成就感,后面的学习过程中会详细介绍。这里只是说下                                            命名空间就像 一个工具箱,工具箱里有你干活所需要的工具。cout 就是一个工具,一个输出工具。*/
}                                        //函数体结束

 

 

这就是整个hello world 源代码的内容了。
那么通过上面的说明,你找到了几个C++源代码正常编译所必须的结构呢?
我找到了2个,一个是Include 部分引用了头文件,另一个是main函数。

三、思考
对于C++源代码的构成你了解了没?哈哈是不是觉得很简单,简单的5行代码,两个部分就写出一个C++程序。

嘿嘿,我要黑心的打击你一下了,别高兴太早,你真正了解了么?我们来一起思考几个问题啊:
1. #inlude 的作用是什么呢?'<>' 这两个符号是干嘛呢?有没有其他符号可以替代呢?如果有,不同符号代表的意义有什么区别呢?被'<>'引用起来的内容又是个什么东西呢?我们对它又了解多少呢?
2. int 是C++语言中的一个内置函数--整型。那C++内置函数有多少种呢?常用的有哪些呢?不同的内置函数又有什么用途呢?
3. std 是什么?有什么作用呢?'::' 这两个冒号连在一起是啥意思呢?cout又有什么作用呢?'<<' 这两个小于号又代表什么意思呢?
本来还想问几个问题呢,我自己都怕了, 因为真的啥都不知道。。。555555.。。。
不过没关系,过不了几天我就会都知道了,过几天你也来回答我吧。嘿嘿
没事的时候自己写点东西,熟悉下,开发语言,必须要每天写东西,不然就都忘记了。。。。

咱别写hello world了,咱定情个I LOVE YOU 吧,哈哈。以后,学会了编写windows程序,可以把表白的话写成一个小程序,然后发给自己中意的女孩儿。。。。是不是很屌丝啊。。。哈哈

 四、回顾
我们通过今天的学习呢,都学到了哪些东西呢?
1. C++最简单源代码的组成部分
2. 如何编译C++源代码文件为操作系统可执行文件(g++)

posted @ 2019-06-22 14:08  halberd.lee  阅读(490)  评论(2编辑  收藏  举报