C 學習(對前面的一點補充)

2021-10-10 22:17:40 字數 1368 閱讀 6078

之前說過c++有三種儲存資料的方式,分別是自動儲存,靜態儲存,動態儲存,到了c++11之後又出了乙個新的儲存方式就是執行緒儲存持續性。如果變數使用關鍵字thread_local宣告的,那麼生命週期與所屬執行緒一樣長。

用register關鍵字修飾的變數,最初是由c語言引進來的,它建議編譯器用cpu暫存器來儲存自動變數,但是到了c++11之後,完全就是起到乙個相容的作用,相容舊**而已,顯示指出變數是自動變數。

一種是定義宣告,一種是引用宣告。定義宣告給變數分配空間,引用宣告則不需要,引用宣告是引用已有變數,一般用extern修飾,且不用初始化,一旦使用了初始化就相當於定義該變數。

int b;

//definition

int a=

0;//definition

extern

int b;

//declaration, b is defined elsewhere

extern

int b=7;

//definition

多個檔案使用外部變數

extern

int cats=20;

//definition because of initialization

int dogs=20;

//definition

int fleas;

//definition

extern

int dogs;

//use dogs from file1.cpp

extern

int cats;

//use cats from file1.cpp

int a=5;

#include

int a=6;

//it is error, static int a=6 is ok(a will be seen in file2.cpp only)

intmain()

靜態區域性變數這種變數作用域為定義塊內,但是生命週期貫穿程式始終,而且它只能夠被定義初始化一次,不會被重複初始化或者定義。

using宣告使特定的標示符可用,using編譯指令使整個命名空間可用。

比如using namespace std以及using std::cin,前者為編譯指令,後者為using宣告

對介面的一點認識

以前雖然老師一直反覆強調介面的重要,並且要求我們寫任何程式之前都嘗試先寫介面,但是由於自己淺顯的認識,一直覺得寫介面就是多此一舉,自己先寫好介面,寫好方法,在繼承去實現方法,這不是多此一舉嗎?直接在類裡寫完所有方法不就完了嗎?但隨著學習的繼續,越來學懂得介面的重要性,並且也嘗試寫介面,這裡,想先寫一...

關於lexical cast,一點補充

看了凌傑的文章 http blog.csdn.net owl2008 archive 2004 09 28 119595.aspx 也想補充兩句。lexical cast比起stringstream來說,的確不一定簡潔,當然,其語義和可讀性都有提高,但同時也失之靈活。例如下面的情況,似乎就無法用le...

關於lexical cast,一點補充

看了凌傑的文章 也想補充兩句。lexical cast比起stringstream來說,的確不一定簡潔,當然,其語義和可讀性都有提高,但同時也失之靈活。例如下面的情況,似乎就無法用lexical cast辦到。include using namespace std int main int,char...