程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++的數據與類型

C++的數據與類型

編輯:關於C++

一、前言

最近在看C++Primer第5版,先前已經看過第4版,但是發現第5版在整個知識布局與個別知識的講解上跟第4版差別還是挺大的,尤其是新增了C++11的內容,正如孟巖老師在第5版前言中所講:“現在能夠以新的C++11風格開發實踐的人是鳳毛麟角,如果能夠純熟的運用C++11的新特征、新機制,那麼就能夠形成一種簡潔優雅的C++編程風絡,開發會變得更高效,更高質”。

所以正好借助第5版來重新學習鞏固C++的知識。《C++的那些事》這個系列,將會以知識碎片的形式記錄我在學習過程中一些知識重點。

二、關於C++的學習

個人身為C++菜鳥,自然是沒有任何經驗之談,這裡摘錄C++Primer5ED前言裡一些個人以為很有道理的觀點。

1,學習語言的一個境界是把自己想象成編譯器。

2,使用C++語言的“兩面性”觀點。C++正在走向完美,所以,C++語言值得學習(甚至研究)。這些知識可以成為一切編程的基礎。然而在實踐中,不必全面地使用C++語言的各種特性,而應根據工程項目實際情況,適當取捨(譬如動態類型信息、虛擬繼承、異常等特性的使用)。通常只鼓勵使用C++語言的一個子集。

關於第2點,個人是相當的認同,C++的一些高級特性,確實只有在一些庫例程中才有體現,一般工程開發中很少能用得上。所以在學習C++的時候,開始不必對一些語法細節或高級技法過於追求完美,可以先知其大概,在以後工作學習中再逐漸加深認識。

三、數據與類型

1,任何一門編程語言都是由一些基本組件來構成,C++也是一樣。

整型、字符型等內置類型

變量,用來為對象命名

表達式和語句,用於操縱上述數據類型的具體值

if或while等控制結構,這些結構允許我們有選擇地執行一些語句或者重復地執行一些語句

函數,用於定義可供隨時調用的計算單元

自定義數據類型:比如:類

標准庫

C++的另外一點就是編程思想,通過類引入了面向對象編程的思想,再通過模板等技術引入了通用或泛型編程的思想。

這本篇文章中,主要是關於前2點的內容:對象和對象的類型。

2,類型是程序設計中最基本的概念,一種類型不僅定義了數據元素的內容,還定義了這類數據上可以進行的運算。內置的數據類型如此,用戶自定義的類型也是如此,C++的一個很重要的任務就是讓用戶設計的類型像語言內置類型一樣好用。

3,程序所處理的數據都保存在變量中,而每個變量都有自己的類型。

4,執行算術運算時,數據類型的選擇

short 一般很少使用,容易產生越界。

char類型在一些實現中有時作為signed處理,而有時作為unsigned處理,所以只用char來表示字符是明智之舉。

在大多數的時候使用int就沒有問題,在很多機器上int用4個字節存儲,足夠滿足大部分計算的要求。

浮點型的選擇就很簡單了,使用double類型基本不會有什麼錯誤,而且有可能會比float計算代價低。

5,在使用無符號數作為循環的索引時,注意unsinged int 與 int類型間的隱式數據轉換,如下面的程序,可能實際並不是你想要的結果。

1 // error 變量u永遠也不會小於0,循環條件一直成立

2 for (unsigned u = 10; u > = 0; -- - u)

3 {

4     std::cout << u << std::endl;

5 }

6,C++11定義了一種新的指針字面值nullptr,用於取代C語言中預編譯常量NULL

7,注意C++中初始化與賦值的區別,這一點在類的定義中更為明顯。初始化不是賦值,初始化的含義是創建變量時賦予其一個初始值,而賦值的含義是把對象的當前值擦除,而以一個新值來替代。

8,引用和指針都是C++定義的復合類型,引用與指針的定義是由一個基本數據類型和緊隨其後的一個聲明符列表組成。

1)引用是給變量另起了一個名字,當定義引用時,程序把引用和它的初始值綁定在一起,而不是將初始化拷貝給引用。一旦初始化完成,程序把引用和它的初始值對象一直綁定在一起。因為無法令引用重新綁定到另外一個對象,因此引用必須初始化。

實際上引用的本質是指針,而且是一個常量指針,占用4個字節的空間。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved