面試6 11 const和靜態變數那些事兒

2021-09-26 08:37:36 字數 2363 閱讀 6727

6 看看const和指標的那些事兒

const在int*左邊

const在int*右邊

const在int*兩邊------>請看**注釋

(1)**

1 #include 2

3int

main()

4

view code

7 說明const與#define的特點與區別

(1)分別看看const和#define

1

#define a 10

2int

b;3 b = 2*a;

#define:

a:編譯器最開始的時候就會將#define a以後所有的**中的a全部替換為10,然後進行編譯

b:生命週期止於編譯器,存在於程式的**段,實際上就是乙個常數

c:沒有資料型別

const:

a:資料段,並分配了空間

b:有資料型別

c:可以進行安全性檢查

8 c++中const有什麼作用(至少三個)

(1)const定義的常量,編譯器可以對其進行資料型別的安全檢查

(2)const修飾函式形式引數 ,輸入引數作為使用者自定義型別和抽象資料型別是,將值傳遞改為const &傳遞可以提高效率

1

void

func(a a)

2void func(a const &a)

a:第乙個函式會產生臨時物件用於複製引數a,臨時物件的構造 析構等都將消耗事件

b:引用傳遞不需要產生臨時物件,但是只用a會改變a,所以加上const修飾

(3)const修飾函式的返回值:比如指標傳遞的函式返回值加const,返回就不能被直接修改,而且返回值只能被賦值給加const修改的同型別指標

1

const

char *getchar(void

){}2

char *ch = getchar();//

error

3const

char *ch=getchar();//

correct

(4)const修飾類的成員函式,任何不修改資料成員的函式都應該加上const修飾(這樣如果不小心修改了成員會報錯提醒我們)

9 static的作用(至少兩個)

(1) 函式體內,被申明為靜態的變數,函式被呼叫的過程中都不會改變

(2)在整個模組內(函式體外),被申明的靜態變數可以被模組內所有的函式訪問,但是不能被模組外的訪問,本地全域性變數

(3)模組內,靜態函式只能被這一模組內的其他函式呼叫。也就是這個函式被限制在宣告它的模組的本地範圍內使用(當前檔案)

10static全域性變數與普通的全域性變數區別(c++)

(1)儲存方式都一樣------>靜態儲存方式

(2)static全域性:限制了作用域,只能是定義變數的當前檔案有效(如果源程式有多個檔案)

普通全域性:在各個原檔案都有效

(3)static函式與普通函式作用域不同:

總之:(1) static全域性與普通全域性:

static全域性只初始化一次,防止其他檔案使用

(2)static區域性和不同區域性:

(3)static函式與普通函式:

static函式在記憶體中只有乙份,普通函式每次呼叫維持乙份複製品

11 c++類的靜態成員

1 #include 2

using

namespace

std;

3class

widget

410 ~widget()

1114

static

intnum()

1518

private:19

static

intcount;

20};

21int widget::count = 0;22

23int

main()

2432

widget z;

33 cout << "

the num is

"<< widget::num() <

34return0;

35 }

(1)首先類中的靜態成員或者方法不屬於類的例項

(2)count的值就是類widget例項的個數

(3)結果

25行中兩個例項下x,y然後29行3個例項,但是出了**塊(也就是括號)就沒有了,最後乙個例項所以3個。

好了,今天的這部分任務結束(嗚嗚嗚,今天電腦好卡!!!!!!),小夥伴加油

外部變數和靜態變數

外部變數是在函式外部定義的全域性變數,它的作用域是從變數的定義處開始,到本程式檔案的結尾。在此作用域內,全域性變數可為各個函式所引用。編譯時將外部變數分配在靜態儲存區。有時需要在其他檔案中使用extern來宣告外部變數,以擴充套件外部變數的作用域。也可用static宣告外部變數,使該變數不能被其他檔...

靜態變數和靜態成員函式

c 中的靜態成員變數和靜態成員函式。1 類靜態資料成員在編譯時建立並初始化 在該類的任何物件建立之前就存在,不屬於任何物件,而非靜態類成員變數則是屬於物件所有的。類靜態資料成員只有乙個拷貝,為所有此類的物件所共享。特別需要注意的一點是 靜態資料成員不能在類中初始化 對於常量靜態類變數有待考證,好像可...

靜態變數和靜態函式

靜態變數 靜態變數使用 static 修飾符進行宣告 在所屬類被裝載時建立 通過類進行訪問 所屬類的所有例項的同一靜態變數都是同乙個值 非靜態變數 不帶有 static 修飾符宣告的變數稱做非靜態變數 在類被例項化時建立 通過物件進行訪問 同乙個類的不同例項的同一非靜態變數可以是不同的值 在c 中,...