對于C語言與C++從業人員,在面試的時候總是會填寫一些考試題,這樣做的目的一是為了能更好的找到的合適的人才,二是想看看被招聘人員的技術能力。但是很多人因為總是在電腦上操作,對于筆試部分還是有一定的抵觸。因此這里總結了C語言與C++面試需要注意的知識點,即const和static的知識點,需要提醒的是,這里只是簡單的總結一部分知識點,希望可以幫助到大家。
const作用
修飾變量,說明該變量不可以被改變;
修飾指針,分為指向常量的指針(pointer to const)和自身是常量的指針(常量指針,const pointer);
修飾引用,指向常量的引用(reference to const),用于形參類型,即避免了拷貝,又避免了函數對值的修改;
修飾成員函數,說明該成員函數內不能修改成員變量。
const指針與引用
指向常量的指針(pointer to const)
自身是常量的指針(常量指針,const pointer)
const引用
指向常量的引用(reference to const)
沒有 const reference,因為引用本身就是 const pointer
的值不可改變,如下文使用例子中的 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 函數內不能訪問非靜態成員。
關于C語言與C++面試需要注意的知識點其實還有很多,這里只是總結一小部分,想了解更多C語言與C++面試的知識點,請繼續關注中培偉業。