對于C語言與C++從業(yè)人員,在面試的時候總是會填寫一些考試題,這樣做的目的一是為了能更好的找到的合適的人才,二是想看看被招聘人員的技術(shù)能力。但是很多人因為總是在電腦上操作,對于筆試部分還是有一定的抵觸。因此這里總結(jié)了C語言與C++面試需要注意的知識點,即const和static的知識點,需要提醒的是,這里只是簡單的總結(jié)一部分知識點,希望可以幫助到大家。
const作用
修飾變量,說明該變量不可以被改變;
修飾指針,分為指向常量的指針(pointer to const)和自身是常量的指針(常量指針,const pointer);
修飾引用,指向常量的引用(reference to const),用于形參類型,即避免了拷貝,又避免了函數(shù)對值的修改;
修飾成員函數(shù),說明該成員函數(shù)內(nèi)不能修改成員變量。
const指針與引用
指向常量的指針(pointer to const)
自身是常量的指針(常量指針,const pointer)
const引用
指向常量的引用(reference to const)
沒有 const reference,因為引用本身就是 const pointer
的值不可改變,如下文使用例子中的 p2、p3。
const使用
// 類class A{private: const int a; // 常對象成員,只能在初始化列表賦值public: // 構(gòu)造函數(shù) A() : a(0) { }; A(int x) : a(x) { }; // 初始化列表 // const可用于對重載函數(shù)的區(qū)分 int getValue(); // 普通成員函數(shù) int getValue() const; // 常成員函數(shù),不得修改類中的任何數(shù)據(jù)成員的值};void function(){ // 對象 A b; // 普通對象,可以調(diào)用全部成員函數(shù)、更新常成員變量 const A a; // 常對象,只能調(diào)用常成員函數(shù) const A *p = &a; // 指針變量,指向常對象 const A &q = a; // 指向常對象的引用 // 指針 char greeting[] = "Hello"; char* p1 = greeting; // 指針變量,指向字符數(shù)組變量 const char* p2 = greeting; // 指針變量,指向字符數(shù)組常量(const 后面是 char,說明指向的字符(char)不可改變) char* const p3 = greeting; // 自身是常量的指針,指向字符數(shù)組變量(const 后面是 p3,說明 p3 指針自身不可改變) const char* const p4 = greeting; // 自身是常量的指針,指向字符數(shù)組常量}// 函數(shù)void function1(const int Var); // 傳遞過來的參數(shù)在函數(shù)內(nèi)不可變void function2(const char* Var); // 參數(shù)指針所指內(nèi)容為常量void function3(char* const Var); // 參數(shù)指針為常量void function4(const int& Var); // 引用參數(shù)在函數(shù)內(nèi)為常量// 函數(shù)返回值const int function5(); // 返回一個常數(shù)const int* function6(); // 返回一個指向常量的指針變量,使用:const int *p = function6();int* const function7(); // 返回一個指向變量的常指針,使用:int* const p = function7();
static作用
修飾普通變量,修改變量的存儲區(qū)域和生命周期,使變量存儲在靜態(tài)區(qū),在 main 函數(shù)運行前就分配了空間,如果有初始值就用初始值初始化它,如果沒有初始值系統(tǒng)用默認值初始化它。
修飾普通函數(shù),表明函數(shù)的作用范圍,僅在定義該函數(shù)的文件內(nèi)才能使用。在多人開發(fā)項目時,為了防止與他人命名空間里的函數(shù)重名,可以將函數(shù)定位為 static。
修飾成員變量,修飾成員變量使所有的對象只保存一個該變量,而且不需要生成對象就可以訪問該成員。
修飾成員函數(shù),修飾成員函數(shù)使得不需要生成對象就可以訪問該函數(shù),但是在 static 函數(shù)內(nèi)不能訪問非靜態(tài)成員。
關(guān)于C語言與C++面試需要注意的知識點其實還有很多,這里只是總結(jié)一小部分,想了解更多C語言與C++面試的知識點,請繼續(xù)關(guān)注中培偉業(yè)。