c++了解(?,簡單解剖一下最初的helloworld輸出程序。(閑的)
首先,貼一下上一個專欄的免責聲明(主打一個懶

主要想說一點,我的專欄大多并不是為了系統(tǒng)學習的時候用作入門了解,只是想起什么東西就寫點東西,主要是想用作和我以前一樣非想深入學習的可以隨便看看了解的程度。


直接先貼一下代碼。應(yīng)該每個剛?cè)腴T的人都寫過的一小段代碼。
{#include<iostream>}:包含c++提供的標準輸入輸出流頭文件。
{using namespace std;}:引入std命名空間
{int main(){}}:main函數(shù)本體(“{}”大部分人喜歡都換行,我個人習慣左花括號位于同一行);
{<<"Hello,world"}:可以簡單理解為cout.opreator<<(),調(diào)用了一個函數(shù),用來輸出。
{cout}:c++的標準輸出
{return 0;}:返回0
好,文章到這里就結(jié)束了,你可以退出了(bushi
真要是只這么說一下那就屬于是知道的不用看,不知道的看不懂了。
所以下面簡單介紹一下上面那一堆都是些啥。

一. 包含頭文件
“?#include<>?”:
這個其實沒什么太值得思考的,如果簡單介紹他的話,它是一條預(yù)編譯命令。作用就是他的英文單詞的意思:“包含”。用于在你的cpp文件中包含另一個文件來做到可以在當前的cpp文件中調(diào)用被包含的文件的,變量,類,函數(shù)等等。被包含的那個文件一般叫做頭文件,后綴一般為“.h”(但只是一般來說是.h,實際上包括cpp在內(nèi)的幾乎大部分文件,都可以被包含)。
“預(yù)編譯指令”不需要理解,但可以試著百度看看。預(yù)編譯的意思可以簡單理解為編譯器在最后運行程序之前會執(zhí)行的。
“ iostream ”:
這個是c++提供的一個標準輸入輸出流的頭文件。什么是輸入輸出流一開始不需要理解,后面會學,只需要知道他本質(zhì)就是個文件,里面包含了一大堆人家已經(jīng)給你寫好的東西了。
PS:#include可以用作包含自己項目中寫的資源性文件,但是在語法上需要改變:#include"path-spec"。(注:雖然一般不需要提醒,但還是提一嘴是英文引號)
值得注意的是,這里包含iostream頭文件的主要作用只是為了調(diào)用后面的cout。大部分語句并不需要iostream頭文件的內(nèi)容,所以如果這段代碼里刪掉cout的輸出語句,頭文件也可以刪掉。任何頭文件都不是必須的,你可以需要什么包含什么,雖然像iostream這種頭文件一開始會經(jīng)常使用,但也不必任何文件中都進行包含。例:


二.?使用std命名空間
對于這句其實相對復雜一些,但是也可以按照意思本身進行理解
“??namespace?”:
首先來看這一句,這一句整體來看的作用是使用命名空間。
先來看什么是命名空間(namespace):命名空間,命名一塊空間。
舉個例子:

這是一個寫在test.h文件內(nèi)的命名空間。他畫出來一個區(qū)域,名字為N,在 “ {} ” 內(nèi)的內(nèi)容就是命名空間內(nèi)的內(nèi)容,它包含一個名字為var的int類型變量,并賦值為10。
(什么是變量,什么是int類型你可以自己了解一下)。
包含test.h可以這么寫:#include"test.h"。在上面說過,用于在一個文件中包含另一個文件,尖括號變?yōu)槊疤栍糜诎约簩懙囊恍╊^文件。
看完例子,可能大概也理解命名空間了,那么回到namespace本身。namespace是命名空間的關(guān)鍵字,可以簡單理解為告訴編譯器這是一個命名空間。
值得注意的事,namespace有很多深入用法,包括:嵌套命名空間、內(nèi)聯(lián)命名空間、以及取別名等,建議自行了解。
“??using?”:
using,在c++using的用法很多,但在這里不過多介紹,只講一下關(guān)于命名空間的最基礎(chǔ)用法。using namespace “name”。對于這個用法可以和上面的include聯(lián)想一下,作用就是直接引入命名空間的全部內(nèi)容。
“ std?”:
在微軟的c++文檔中有這么一句話:
“所有 C++ 標準庫類型和函數(shù)都在std命名空間或嵌套在std內(nèi)的命名空間中進行聲明。”
不需要深入了解,只需要明白你那些用#include<>包含的頭文件當中的大部分東西都在名為std的命名空間里。
還沒結(jié)束,關(guān)于命名空間的使用還有一些額外的東西需要進行補充:
在上面using那里我說過一句話using作用是引入命名空間的全部內(nèi)容。但對于命名空間的使用不是所有時候都需要引入全部東西。相反,如果不是為了打比賽做題之類的在實際項目中反而不怎么直接在頭文件下就引入某個命名空間(特別是std)的全部內(nèi)容。因此有其他語法可供使用:

命名空間的名字+雙冒號+實際內(nèi)容。雙冒號的作用是作用域解析。說人話可以簡單理解為:訪問聲明的一些代碼區(qū)域,命名空間、類等。
但在寫一些大的項目的時候往往會出現(xiàn)一些對象,函數(shù)等會出現(xiàn)很多次,這時候,如果不用using namespace std;需要多寫很多std::,因此可以有另一種語法:

這么寫可以只直接引入命名空間中的某個對象等。

三. 主函數(shù):
對于主函數(shù),由于本身本質(zhì)就是一個函數(shù)。所以對這個的介紹就很容易牽扯到函數(shù)相關(guān)的內(nèi)容。但是考慮到我寫這篇專欄的面向?qū)ο?。所以打算簡單粗略介紹一下函數(shù)的內(nèi)容:
函數(shù): function,這個單詞的另一個近似意思是功能,對于編程來說這個或許更好理解一些。
但其實,編程中的函數(shù)和數(shù)學中的函數(shù)是很相似的。(或者說就是演變過來的?)
直接列一個基礎(chǔ)聲明語法:

retype:返回數(shù)據(jù)的數(shù)據(jù)類型 (類型可以為void---無效的(就是沒有))
function_name:函數(shù)名字
type:參數(shù)的數(shù)據(jù)類型
“ ()?”:函數(shù)參數(shù)列表
arg:參數(shù)名字
( type arg 合起來就是需要傳入的函數(shù)參數(shù))
“ {} ”:函數(shù)內(nèi)的主要代碼
return:進行函數(shù)返回值的關(guān)鍵字
var:函數(shù)返回值
(返回數(shù)據(jù)的數(shù)據(jù)類型為void時,不需要返回值,也就是不需要return var)
這是一個函數(shù)的基本語法,不過多深入,只簡單介紹一下:函數(shù)的主要作用的可以簡單理解為把一段代碼放入到一個區(qū)域內(nèi)并給他命名。但是相比命名空間那種真正意義上的代碼區(qū)域劃分,函數(shù)更像是把代碼實際打包成一個工具,在每次需要的時候使用(這個操作叫做函數(shù)調(diào)用)這塊區(qū)域(也只有在調(diào)用的時候才會運行,不同于命名空間),以實現(xiàn)代碼只寫一次,但是可以使用無數(shù)次。也因此他不能像命名空間那樣直接調(diào)用函數(shù)內(nèi)的局部數(shù)據(jù)。
對于參數(shù)列表的作用:如果你的那一段函數(shù)(可以理解為工具)需要用來運算一些已有的數(shù)據(jù)(可以理解需要使用對象),那么就需要通過函數(shù)參數(shù)傳入。(雖然一般不建議這么用,但是對于和函數(shù)位于相同作用域下的變量,只要聲明在函數(shù)前面,就可以在函數(shù)內(nèi)直接調(diào)用,不需要傳入?yún)?shù)列表)
返回值:如果函數(shù)最后運算出了一個結(jié)果。由于函數(shù)的聲明并不在函數(shù)被調(diào)用的地方,那么他的結(jié)果就沒辦法直接給出去,就需要通過return,返回出去。
例:?假設(shè)定義一個sum函數(shù),作用為傳入兩個參數(shù)a和b,并返回a和b的和。
int a = sum(1,2);
那么這個的作用就是聲明一個整型變量a,初始化為數(shù)值sum的和。
(剛?cè)腴T函數(shù)可能無法好好理解,建議聽聽專業(yè)課程)
回到正題,簡單來說int main(){return 0; }本質(zhì)就是一個函數(shù)。是一個返回值為int,并且一般為0,參數(shù)列表為空的函數(shù)。只不過這個函數(shù)是在程序運行的時候會直接被編譯器調(diào)用的函數(shù),是程序的主要入口,也因此會被稱為主函數(shù)(main)。
對于后期學到的各種語法,例如for,if,都需要寫在主函數(shù)內(nèi)。

四. 沒什么好談的是std::cout:
“ std::cout ”:

在iostream頭文件中有cout對象的聲明
(但關(guān)于什么是對象,以及這個聲明不過多介紹)
實際上對于cout其實沒必要過多介紹,不是因為沒什么內(nèi)容,cout內(nèi)容挺多的,只是因為很長一段時間下,對于cout的使用也僅僅是一開始的這種簡單使用。
所以直接掛一下語法:cout <<?content << ...;

最后想說的:
關(guān)于這個專欄,因為寫的很急很快(出發(fā)前幾個小時寫出來的),所以恐怕錯誤會很多,歡迎指出。且這個專欄發(fā)出去之后的第二天(1點為新的一天)因為有些三次元事情,所以哪怕有評論我也看不到,也無法更改,所以建議直接在評論區(qū)進行詳細的修改介紹(大概得半個多月之后才有可能上線)。
(不過肯定沒人看,所以大概也不會有,但是還是打個甲)