tft每日頭條

 > 圖文

 > static在c語言的作用的例子

static在c語言的作用的例子

圖文 更新时间:2024-12-23 10:52:08

static在c語言的作用的例子(C基礎語法梳理const)1

const作用

修飾變量,說明該變量不可以被改變;

修飾指針,分為指向常量的指針(pointer to const)和自身是常量的指針(常量指針,const pointer);

修飾引用,指向常量的引用(reference to const),用于形參類型,即避免了拷貝,又避免了函數對值的修改;

修飾成員函數,說明該成員函數内不能修改成員變量。

const 的指針與引用指針

指向常量的指針(pointer to const)

自身是常量的指針(常量指針,const pointer)

引用

指向常量的引用(reference to const)

沒有 const reference,因為引用隻是對象的别名,引用不是對象,不能用 const 修飾

(為了方便記憶可以想成)被 const 修飾(在 const 後面)的值不可改變,如下文使用例子中的 p2、p3

const 使用

// 類 class A { private: const int a; // 常對象成員,可以使用初始化列表或者類内初始化 public: // 構造函數 A() : a(0) { }; A(int x) : a(x) { }; // 初始化列表 // const可用于對重載函數的區分 int getValue(); // 普通成員函數 int getValue() const; // 常成員函數,不得修改類中的任何數據成員的值 }; void function() { // 對象 A b; // 普通對象,可以調用全部成員函數 const A a; // 常對象,隻能調用常成員函數 const A *p = &a; // 指針變量,指向常對象 const A &q = a; // 指向常對象的引用 // 指針 char greeting[] = "Hello"; char* p1 = greeting; // 指針變量,指向字符數組變量 const char* p2 = greeting; // 指針變量,指向字符數組常量(const 後面是 char,說明指向的字符(char)不可改變) char* const p3 = greeting; // 自身是常量的指針,指向字符數組變量(const 後面是 p3,說明 p3 指針自身不可改變) const char* const p4 = greeting; // 自身是常量的指針,指向字符數組常量 } // 函數 void function1(const int Var); // 傳遞過來的參數在函數内不可變 void function2(const char* Var); // 參數指針所指内容為常量 void function3(char* const Var); // 參數指針為常量 void function4(const int& Var); // 引用參數在函數内為常量 // 函數返回值 const int function5(); // 返回一個常數 const int* function6(); // 返回一個指向常量的指針變量,使用:const int *p = function6(); int* const function7(); // 返回一個指向變量的常指針,使用:int* const p = function7();

static作用

修飾普通變量,修改變量的存儲區域和生命周期,使變量存儲在靜态區,在 main 函數運行前就分配了空間,如果有初始值就用初始值初始化它,如果沒有初始值系統用默認值初始化它。

修飾普通函數,表明函數的作用範圍,僅在定義該函數的文件内才能使用。在多人開發項目時,為了防止與他人命名空間裡的函數重名,可以将函數定位為 static。

修飾成員變量,修飾成員變量使所有的對象隻保存一個該變量,而且不需要生成對象就可以訪問該成員。

修飾成員函數,修飾成員函數使得不需要生成對象就可以訪問該函數,但是在 static 函數内不能訪問非靜态成員。

this 指針

this 指針是一個隐含于每一個非靜态成員函數中的特殊指針。它指向調用該成員函數的那個對象。

當對一個對象調用成員函數時,編譯程序先将對象的地址賦給 this 指針,然後調用成員函數,每次成員函數存取數據成員時,都隐式使用 this 指針。

當一個成員函數被調用時,自動向它傳遞一個隐含的參數,該參數是一個指向這個成員函數所在的對象的指針。

this 指針被隐含地聲明為: ClassName *const this,這意味着不能給 this 指針賦值;在 ClassName 類的 const 成員函數中,this 指針的類型為:const ClassName* const,這說明不能對 this 指針所指向的這種對象是不可修改的(即不能對這種對象的數據成員進行賦值操作);

this 并不是一個常規變量,而是個右值,所以不能取得 this 的地址(不能 &this)。

在以下場景中,經常需要顯式引用 this 指針:

為實現對象的鍊式引用;

為避免對同一對象進行賦值操作;

在實現一些數據結構時,如 list。

寫在最後:對于準備學習C/C 編程的小夥伴,如果你想更好的提升你的編程核心能力(内功)不妨從現在開始!

編程學習書籍分享:

static在c語言的作用的例子(C基礎語法梳理const)2

編程學習視頻分享:

static在c語言的作用的例子(C基礎語法梳理const)3

整理分享(多年學習的源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

對于C/C 感興趣可以關注小編在後台私信我:【編程交流】一起來學習哦!可以領取一些C/C 的項目學習視頻資料哦!已經設置好了關鍵詞自動回複,自動領取就好了!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved