C 基礎入門教程(一) 基礎知識大雜燴

2022-10-04 04:09:12 字數 3298 閱讀 2190

我很鬱悶,這本書果然講得很詳細,我在看第二章,看完要深呼吸,實在太詳(lao)細(dao)了。

不過這很好,後面難一些的內容應該會不錯~

那麼,這章只是作為預覽的章節,我抽出一些稍微比較有營養的內容記錄一下吧~

注意:本系列教程不適合無任何程式語言基礎的朋友,只是作為c++基礎的一種補充。

教程內容基於《c++ primer plus》一書,適合初學者,熟手請直接忽略。

1. 如果你不注釋,那麼,我會把你注釋掉~!

c++的注釋有2種,

第一種,單行注釋,那就是://

如下**:

複製** **如下:

// 呵呵

test* t = new test();;

//後面跟著的就是注釋內容,屬於單行注釋

所謂的注www.cppcns.com釋,就是與**無關的內容,與編譯器無關的內容,只是給我們自己或者其他人看的。

就像是說明書。

另外還有一種注釋,那就是:/* */

如下**:

複製** **如下:

/*呵呵

你剛剛說什麼來著?

*/test* t = new test();;

/**/中間可以放一段文字,這是多行注釋。

這廢話就不多說了。

另外要說一下廢話(小若:剛剛誰說廢話不多說來著?),那就是注釋真的很重要~!

不要聽那麼大牛說什麼變數名字取得好、函式名字取得好就不需要注釋。

每個人對「www.cppcns.com好」是有不同的評價的,所以注釋很重要,誰喜歡看那些一整頁都沒有注釋的**呢?

不管是英文注釋還是中文注釋,都能讓其它人或者自己以最快的速度了解某段**的意思。

沒錯,如果遇到那些自以為自己寫得一手完美**的人,乙個注釋都不寫的,那麼,你就把他整個人給注釋掉吧~!程式設計客棧

2.標頭檔案

語言本身除了語法之外,最重要的應該就是各種庫了。

各種庫,也就是它的各種功能,我們只要呼叫一些函式就能完成特定的功能。

比如列印文字、讀寫檔案什麼的。

c++提供了很多這樣的庫,它們被分別存放在不同的檔案中。

如果想使用這些庫裡面的函式,就要包含這些庫的標頭檔案。

所以,我們經常會看到下面的**:

複製** **如下:

#include "hello.h"

#include

#include就是用來包含標頭檔案的,包含標頭檔案之後就能使用某個庫的函式了。

那麼,為什麼有些標頭檔案是.h結尾,有些又沒有呢?

其實現在c++預設規定是不需要.h結尾的,.h結尾程式設計客棧只是以前留下來的習慣~

但,其實現在大家在新建類檔案的時候還是習慣保留.h,而c++自帶的庫可能更多的是沒有字尾的。

其實標頭檔案就是乙個檔案,什麼結尾關係不大(大部分情況下),所以有時候我們也能看到.hpp結尾的檔案。

這個就不多說了~

總而言之,如果你編譯**的時候報錯,說什麼不能使用未宣告的型別之類的,基本上就是沒有包含相應的標頭檔案了。

3.命名空間

作為初學者,應該常常見到下面的**(小若:難道不是初學者就不常見嗎?):

複製** **如下:

#include "cocos2d.h"

using namespace cocos2d;

比如我們要使用cocos2d-x的sprite類,這個類是在cocos2d.h庫中的,所以我們首先要包含cocos2d.h標頭檔案。

然後就使用sprite這個類,比如:sprite* sp = sprite::create(「boy.png」);

但相信大家都試過,這麼直接用會報錯的,大概是說找不到sprite。

這是因為sprite是在某個命名空間裡的,我們要這樣使用它:cocos2d::sprite* sp = cocos2d::sprite::create(「boy.png」);

這樣就沒問題了,那麼,命名空間是個什麼東西?

4.不同庫的相同類名衝突

我們先來跑一下題,假設我想貢獻一下,給大家寫乙個更好用的庫(標頭檔案叫做mutou.h),然後,其中也有乙個類叫做sprite。

於是,大家會這麼使用我的庫:sprite* msp = sprite::new(「girl.png」);

那麼,問題來了,學挖掘機哪家…(小若:停~!回來!別跑題!)

那麼,如果我們想同時使用cocos2d和mutou的sprite類,會發生什麼事情?如下**:

複製** **如下:

#include "cocos2d.h"

#include "mutou.h"

sprite* sp = sprite::create("boy.png");

sprite* msp = sprite::new("girl.png");

這樣一定會報錯,大概是說sprite不明確

所以,這個時候,就需要乙個叫做「命名空間」的東西來區分這些不同庫的相同名字的類了。

我們把cocos2d的庫放到名為cocos2d的命名空間裡,把mutou的庫放到名為mutou的命名空間裡:

複製** **如下:

#include "cocos2d.h"

#include "mutou.h"

cocos2d::sprite* sp = cocos2d::sprite::create("boy.png");

mutou::sprite* msp = mutou::sprite::new("girl.png");

這麼使用就不會出問題了,至於如何把某個庫放到某個命名空間中,其實很簡單,但是這裡先不介紹了。

5.偷懶

回到最初,using namespace cocos2d;又是什麼東西呢?

如剛才所見,在sprite前面總是要加上cocos2d::這樣的字首,實在是太煩人了。

所以,我們可以偷懶,使用了using namespace cocos2d;之後,就不需要寫這樣的字首了。

但是,這只是在沒有衝突的情況下,如果遇到剛剛說的不同庫的相同類名衝突,就必須使用字首。

書上有提到,濫用using namespace不是什麼好事,但我沒有經歷過什麼坑,可能在大型專案中才會出現問題吧程式設計客棧。

一般的手遊是沒什麼影響了。

如果擔心的話,可以這樣使用:using namespace cocos2d::sprite;

這樣依舊可以不用cocos2d::字首就能使用sprite類,但如果要用到cocos2d庫的其他類,就又要再一次使用using namespace cocos2d::name;

總之,這種方式就是:用到的類才使用using宣告。可以節省一些開支。

6.結束

好吧,前面的內容實在是太基礎,基礎到沒東西可以介紹了。

下一章應該會好一些…

本文位址:

C 基礎入門教程 基礎知識大雜燴

前言 注意 本系列教程不適合無任何程式語言基礎的朋友,只是作為c 基礎的一種補充。教程內容基於 c primer plus 一書,適合初學者,熟手請直接忽略。1.如果你不注釋,那麼,我會把你注釋掉 c 的注釋有2種,第一種,單行注釋,那就是 如下 呵呵 test t new test 後面跟著的就是...

WCF入門教程 WCF基礎知識問與答

3 為什麼我們要選用wcf?在windows平台下,尤其是在.net平台下開發面向服務的應用程式,或者開發分布式系統,最佳選擇就是wcf。為什麼呢?原因就在於wcf涵蓋了之前微軟推出的所有用於分布式開發的技術,包括remoting web services wse msmq等,並以一種統一的程式設計...

C 入門基礎知識

1.c 基本資料型別 整型int 字元型 char 浮點型 float double 邏輯性 bool 無型別 void 也稱內建型別 語言內部 已定義好的型別 非基本資料型別 陣列 type 指標 type 結構體 struct 聯合體 union 列舉 enum 類 class 這些即就是自定義...