程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ Primer 第二章 變量和基本類型 筆記

C++ Primer 第二章 變量和基本類型 筆記

編輯:C++入門知識

 

第二章 變量和基本類型 筆記

2.1 基本內置類型

——C++定義了一組整數、浮點數、單個字符和布爾值的算術類型,另外還定義了一種稱為void的特殊類型。void類型沒有對應的值,僅用在有有限的一些情況下,通常用作無返回值函數的返回類型。

類型 含義 最小存儲空間

-bool 布爾型 ——

-char 字符型8位

-wchar_t 寬字符型16位

-short 短整型16位

-int 整型16位

-long 長整型32位

-float 單精度浮點型6位有效數字

-double 雙精度浮點型10位有效數字

-long double 擴展精度浮點型10位有效數字

關於內置類型的摘要:

-short、int和long類型都表示整型值,存儲空間的大小不同。一般,short類型為半個機器字長,int類型為一個機器字長,而long類型為一個或兩個機器字長。

 

-bool類型表示真值true和false。可以將算術類型的任何值賦給bool對象。0值算術類型代表false,任何非0的值代表true。

 

-unsigned和signed類型有什麼差別?

—前者為無符號類型,只能表示大於或等於0的正數。後者為符號類型,可以表示正數、負數和0。

 

-一般float類型用一個字(32位)來表示,double類型用兩個字(64)來表示,longdouble類型用三個或四個字(96或128字)來表示。注意:float型只能保證6位有效數字,而double型至少可以保證10位有效數字。所以使用double類型基本上不會錯了。

 

2.2 字面值常量(字符常量)

整型字面值規則

-以0開頭的字面值整數常量表示八進制,以0x或0X開頭的表示十六進制、

-字面值整數常量的類型默認為int或long類型。

浮點字面值規則

-默認浮點字面值常量為double類型。在數值的後面加上f表示單精度,加上L表示擴展精度。

-通常可以用十進制或者科學技術法表示浮點型常量。

 

布爾字面值和字符字面值

-用true和false表示布爾型字面值:bool test =false

-字符型值用一對單引號來定義,如:(‘a’)

 

轉義字符常量

-都是以反斜線符號開始,如:(\n)

 

字符串常量

-用雙引號括起來的零個或者多個字符表示,如:(“hello world”)

-注意:C++中所有字符串常量都由編譯器自動在末尾添加一個空字符(‘\0’)

 

2.3  變量

-重要:程序中使用變量前必須先定義變量的類型。

-左值(lvalue):可以出現在賦值語句的左邊或右邊。

-右值(rvalue):只能出現在賦值的右邊,不能出現在賦值語句的左邊。

-左值就是變量的地址,右值就是變量的值。

-變量是左值,因此可以出現在賦值語句的左邊。數字常量是右值,因此不能被賦值。

-什麼是變量:具有名字的存儲區,是有名字的對象。

-什麼是對象:內存中具有類型的區域,計算左值表達式時就會產生對象。

變量名

-即變量的標識符,可以由字母、數字和下劃線組成。變量名必須以字母或下劃線開頭,並且區分大小寫字母,如:somename

-注意:標識符不能包含兩個連續的下劃線,也不能以下劃線開頭後面緊跟一個大寫字母。

-在函數外定義的標識符不能以下劃線開頭

定義對象

如:intunits_sold;

-以類型名開始+標識符+;

-以分號結束定義

初始化

-兩種初始化變量的形式:復制初始化和直接初始化。

如:int ival(1024);-直接初始化

Int ival=1024;-復制初始化

-注意:C++中初始化和賦值是兩種不同操作。

聲明和定義

-變量的定義(definition)用於為變量分配存儲空間,還可以為變量指定初始值。在一個程序中,有且只僅有一個定義。

-聲明(declaration)用於向程序表明變量的類型和名字。

-定義也是聲明:當定義變量時我們聲明了它的類型和名字。

-不定義變量的聲明包括對象名、對象類型和對象類型前關鍵字extern:

-如,extern int i;聲明了變量名i並不定義它。

-extern聲明不是定義,也不分配空間。

-只有當聲明也是定義是,聲明才可以有初始化式,因為只有定義才能分配存儲空間。

-只有當extern聲明位於函數外部時,才可以含有初始化式。

名字作用域

-局部變量:函數內部定義,還有語句作用域

-全局變量:函數外變量

 

 

2.4  const限定符

-const是關鍵字,用來定義常變量,即把一個對象轉換成一個常量。

-注解:因為常量再定義後就不能被修改,所以定義時必須初始化。

-通過指定const變量為extern,就可以在整個程序中訪問const對象,否則const變量只能是局部變量。

-注解:非const變量默認為extern,要使const變量能夠在其他的文件中訪問,必須顯式地指定它為extern。

 

 

2.5  引用

-重要概念:引用只是對象的另一個名字。

-是一種復合類型(compound type),添加“&”來定義

-引用必須用於該引用同類型的對象初始化:

int ival=1024;

int &refval=ival;

關於const引用

-const引用是指向const的引用

如:const intival=1024;

const int&refval=ival;   可以讀取但不能修改refval,

-const引用可以初始化為不同類型的對象或者初始化為右值。

-注解:非const引用只能綁定到與該引用同類型的對象。

const引用則可以綁定到不同但相關的類型的對象或綁定到右值。

 

 

typedef名字

-用來定義類型的同義詞:typedef double wages;//wages是double的同義詞

-typedef通常被用於以下三種目的:

為了隱藏特定類型的實現,強調使用類型的目的。

簡化復雜的類型定義,使其更易理解。

允許一種類型用於多個目的,同時使得每次使用該類型的目的明確。

 

 

枚舉(enum)

定義和初始化枚舉

如:enumopen_modes(input,output,append);

包括以下幾個部分:

關鍵字enum,其後是一個可選的枚舉類型名,和一個用花括號括起來、用逗號分開的枚舉成員列表。

-用來初始化枚舉成員的值必須是一個常量表達式。

 

 

類類型

-類定義以關鍵字class開始,其後是該類的名字標識符。類體位於花括號裡面。

-注意:花括號後面必須要跟一個分號。

如:

      class Sales_item{

public:

      //operations on Sales_item objects willgo here

private:

std::string isbn;

unsigned units_sold;

double revenne;

};

解析:public和private被稱為成員訪問限定符,用它們來聲明各成員的訪問屬性。

花括號裡面的是類體,類體定義了組成該類型的數據和操作。

-操作稱為成員函數,數據則稱為數據成員

-注意:結構體(struct)跟類(class)的不同,它們定義類的唯一差別在於默認訪問級別:默認情況下,struct的成員是public,而class的成員為private。還有一點,結構體沒有構造函數。

 

編寫自己的頭文件

-頭文件一般包含類的定義、extern變量的聲明和函數的聲明。

頭文件的正確使用能夠帶來兩個好處:

保證所有文件使用給定實體的同一聲明;

當聲明需要修改時,只有頭文件需要更新;

-頭文件用於聲明而不是用於定義

-頭文件可以定義類、值在編譯就已知道的const對象和inline函數。

-一些const對象定義在頭文件中為了是編譯器能夠看見其初始化式。

-如果const變量不是用常量表達式初始化,那麼它不應該在頭文件中定義。

預處理器的簡單介紹

-#include指示只接受一個參數:頭文件名

-重要:設計頭文件時,應使其可以多次包含在同一個源文件中。

-預處理器變量有兩種狀態:已定義或未定義。

#define指示接受一個名字並定義改名字為預處理器變量。

#ifndef指示檢測指定的預處理器變量是否未定義。如果未定義,那麼跟在其後的所有指示都被處理,直到出現#endif。

注:如果頭文件名括在尖括號(<  >)裡,那麼認為該頭文件是標准頭文件。

如果頭文件名括在一對引號裡,那麼認為它是非系統頭文件。

總結:

本章的筆記到這裡就是全部內容了,因為之前有一定的基礎,學起本章來並不會吃力,我發現這本書的一些名稱和叫法跟之前學譚伯伯的有些差別,對我來說,我更願意譚伯伯那種叫法,比較通俗易懂,開始慢慢發現這本書有些東西解析復雜化了,新接觸了一些新術語和內容,要我一下子能很好掌握,對我來說是一個挑戰,為了能避免自己遺忘得太快,沒結束一章,在三天內做筆記,把重要內容摘錄下來

摘自:wwj的夢想之路

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