預設引數,儲存的連續性

2021-07-30 00:06:22 字數 2545 閱讀 3508

c++學習筆記2

預設引數

char* left(const

char* str,int n=1);//引數n的預設值為1

呼叫引數時:str1=left(str);//返回第乙個字元組成的字串

str2=left(str,5);//返回前五個字元組成的字串;

函式過載(函式多型)

是指可以有多個同名的函式;僅當函式基本上執行相同的任務,但使用不同形式的資料是,才採用函式過載;

void print(const

char* str,int width); //1

void print(double d,int width); //2

使用:print("wo are family",12); //使用1

print(19.99,10); //使用2

將非const值賦給const變數是合法的,但反之是非法的;

函式模板

template

void swap(anytype &a,anytype &b)

swap(2,8);

swap(2.00, 5.1);

void swap(job&, job&);//非模板函式原型

template

void swap(t &, t &);//模板原型

template

<> void swap(job &, job &);//顯式具體化函式原型

如果有多個原型時,編譯器在選擇原型時,非模板版本優先於顯式具體化和模板,而顯式具體化優先於使用模板生成的版本;

單獨編譯

(1)標頭檔案中長包含的內容:函式原型(protortype),使用#define或const定義的符號常量,結構宣告,類宣告,模板宣告,內聯函式;

(2)如果檔名包含在<>中,則c++編譯器將在儲存標準標頭檔案的主機系統的檔案系統中查詢;如果檔名包含在

「 」中,則編譯器將首先查詢當前工作目錄或源**目錄(或其他目錄,取決於編譯器),如果沒有在**找到標頭檔案,則在標準位置查詢。

儲存的持續性、作用域和連續性

(1)變數作用域:區域性變數作用域只在定義它的**塊中(由花括號括起的一系列語句);全域性變數的作用域在定義位置到檔案結尾都可用;

(2)靜態持續變數:

...

.main.cpp...

...檔案

int global

=100; //靜態持續變數,可外部鏈結,在整個程式的執行期間都存在

static int one_file=

50; //靜態持續變數,內部鏈結,只能在本檔案中使用,對別檔案不可見

int main()

void fun_1(int n)

靜態變數預設初始化為0;

(3)單定義規則:變數只能定義一次;

定義宣告(定義definition)給變數分配記憶體;引用宣告(宣告declaration)使用關鍵字extern,不進行初始化,不給變數分配儲存空間,因為他只是引用變數;

如果在多個檔案中使用外部變數,只需要在乙個檔案中包含該變數的定義(單定義規則),單在使用該變數的其他檔案中,都必須使用關鍵字extern宣告它;

//file_0.cpp

int cats=0;

int dogs=10;

....

//file_1.cpp

extern

int cats;

extern

int dogs;

.....

//file_2.cpp

extern

int cats;

extern

int dogs;

作用域解析運算子」::」放在變數前面,表示使用變數的全域性版本;

(4)如果檔案定義了乙個靜態外部變數,其名稱與另乙個檔案中宣告的常規外部變數相同,則在該檔案中,靜態變數將隱藏常規外部變數;

int global

=20; //external declaration

.....

static int global

=5; //known to file2 only;

void fun()

;where* one=new

where;

(6)定位new運算子,可以指定要使用的位置。

struct caff

;char buffer[50];

caff* p1=new (buffer) caff; //place structure in buffer

caff* p2=new caff; //place structure in heap;

(7)在函式中宣告的區域性變數將隱藏在同乙個檔案中宣告的全域性變數(在名稱相同時)

最高連續性

問題描述 給定陣列a,a是元素為0或者1的陣列,我們可以更改k個陣列中的0,求陣列中最大連續子陣列的長度。例子 演算法思路 從0開始依次遍歷陣列,當某個元素為0的時候將其轉換為1,由於我們最終只要求解這個最大連續子陣列的長度,因此這裡 可以用k 1來表示元素從0轉換為1。如果為1,則k不變化。接著要...

STL序列容器的儲存連續性

stl序列容器的儲存連續性 摘自 extended stl 中譯 c 標準庫提供了四種序列容器 deque list vector,和basic string。第四種序列容器basic string,主要用於表示字串,但它確實是不折不扣的序列容器,所以如果你非要這樣做的話,你也可以用它來儲存char...

概率的性質 連續性

概率的連續性如下定義 我們可以用韋恩圖把他們表示出來,便於理解 圖1 對應性質 1 圖2 對應性質 2 從圖1中我們可以看出,集合單調不增,打個比方,此集合會越來越小,那麼稱集合上連續 從上方逼近 極限為集合的交集。簡單的說,其實就是求多個事件都同時發生的概率為多少。圖2集合單調不減,此集合存在極限...