C++primer 第五版 *筆記一 [渣渣進化記]

【第一章】

書店程序核心:

if 語句例子

#include <iostream>

int main()
{
	int currVal = 0, val = 0;
	if (std::cin >> currVal) {        
		int cnt = 1;
		while (std::cin >> val) {
			if (val == currVal)   
				++cnt;            
			else {
				std::cout << currVal << " occurs " 
				          << cnt << " times" << std::endl;
				currVal = val;    
				cnt = 1;         
			}
		}  		
		std::cout << currVal << " occurs " 
		          << cnt << " times" << std::endl;
	}
	return 0;
}
(書上的例子又有錯…無語…此程序只能顯示第一個出現的次數…還沒想怎麼改)


【第二章】

·  當知曉數值不可能爲負時,選用無符號類型

[引用]:

       定義引用時,把引用和初始值綁定在一起,不是把初始值拷貝給引用,無法讓引用重新綁定到另一對象。引用只是爲已經存在的對象起另一個名字。

·引用必須初始化!初始值也必須是對象,而不是具體的數值。


[指針]:

寫法1:修飾符和變量標識符寫在一起 int *p1, *p2;

寫法2:修飾符和類型名寫在一起,每條語句只定義一個變量。 int* p1;    int* p2;

·新標準下最好用nullptr初始化指針

void* 指針——存放任意對象的地址,缺點是不知道是什麼類型的指針,不能直接操作它所指向的對象。

·指向指針的引用

int i = 42; int *p; int *&r = p;//r爲引用。從右往左,離變量名最近的符號

[const]:

默認狀態下,const對象僅在文件內有效,所以想在多個文件之間共享const對象,必須在變量的定義前加 extern關鍵字

extern const int bufSize = fcn();

const的引用:允許爲一個const引用綁定非常量的對象、字面值

int i = 42;
const int &r1 = i;
const int &r2 = 42;
const int &r3 = r1 * 2;

int &r4 = r1 * 2;// 錯誤,r4是非常量引用

const 的引用 對於引用對象本身是不是常量未作限定,所以對象可由其他途徑被改變其值

int i = 42;
int &r1 = i;
const int &r2 = i;//不允許通過r2修改i的值
r1 = 0;//i的值被修改爲0
r2 = 0;//錯誤,r2是常量引用

const引用 可以引用一個非const的對象

指向常量的指針 可以指向非常量對象

常量指針: *const   必須初始化,則其值(指針中的地址)不能再改變,不變的是指針的值 不是指向的那個值

頂層const:指針本身是個常量[總結:初始化const 、const指針 、constexpr指針 是頂層const]

const int ci = 42;//頂層const
int i = 0;
int *const p1 = &i;//頂層const

constexpr int *p3 = &ci;//頂層const

底層const:指針所指對象是個常量[總結:const的引用 、指向const的指針 是底層const]

const int *p2 = &ci;//底層const
const int &r = ci;//底層const

·用constexpr來聲明一個常量表達式

·類型別名定義 typedef 新標準中使用 別名聲明using

typedef char *pstring;
const pstring cstr = 0;//指向char的常量指針

注: 不能將類型別名替換成原來樣子理解

const char *cstr = 0;//聲明瞭指向const char的指針

(auto decltype 略看了…)

·auto 類型說明符——讓編譯器替我們分析表達式所屬的類型,auto定義的變量必須有初始值

·decltype 類型指示符——另一種類型說明符,選擇並返回操作數的數據類型,不實際計算表達式的值


·預處理器中,頭文件保護符依賴於預處理變量,預處理變量兩種狀態:已定義  未定義
#define 把一個名字設定爲預處理變量

#ifdef 變量已定義爲真

#ifndef 變量未定義爲真。檢查結果爲真則執行後續操作直到遇見 #endif

有效的防治了重複包含的發生




發佈了7 篇原創文章 · 獲贊 39 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章