日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++求职宝典21个重点笔记(常考笔试面试点)

發布時間:2025/3/21 c/c++ 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++求职宝典21个重点笔记(常考笔试面试点) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C/C++求職寶典21個重點筆記(常考筆試面試點)

這是我之前準備找工作時看《C/C++求職寶典》一書做的筆記,都是一些筆試面試中常考的重點難點問題,但比較基礎,適合初學者看。

?

1. char c = '\72'; 中的\72代表一個字符,72是八進制數,代表ASCII碼字符“:”。

2. 10*a++ 中a先進行乘法運算再自增(筆試中經常喜歡出這類運算符優先級容易混淆的輸出問題)。

3. const和static的作用 太常見的問題了,下面給出一個較詳細的參考答案: static關鍵字: 1)函數體內static變量的作用范圍為函數體。不同于auto變量。該變量的內存只被分配一次。因此其值在下次調用時仍維持上次的值。 2)在模塊內的static全局變量可以被模塊內的所有函數訪問。但不能被模塊外的其他函數訪問。 3)在模塊內的static函數只可被這一模塊內的其它函數調用。這個函數的使用范圍被限制在聲明它的模塊內。 4)在類中的static成員變量屬于整個類所有,對類的所有對象只有一份復制。 5)在類中的static成員函數屬于整個類所有,這個函數不接受this指針,因而只能訪問類的static成員變量。 const關鍵字: 1)欲阻止一個變量被改變,可以使用const關鍵字。在定義該const變量時,通常需要對它進行初始化。因為以后就沒有機會再改變它了。 2)對指針來說,可以指定指針的本身為const,也可以指定指針所指向的數為const。或二者同時為const。 3)在一個函數的聲明中,const可以修飾形參,表明它是一個輸入參數。在函數內不能改變其值。 4)對于類的成員函數,若指定其為const類型。則表明其是一個常量函數。不能修改類的成員變量。 5)對于類的成員函數,有時候必須指定其返回值為const類型。以使得其返回值不為“左值”。 4. 注意sizeof不是函數而是運算符,所以在計算變量所占用空間大小時,括號是可以省略的,但在計算類型大小時括號則不能省略,比如int i = 0; 則sizeof int是錯誤的。 5. 有1,2,…,n的無序數組,求排序算法,并且要求時間復雜度為O(n),空間復雜度O(1),使用交換,而且一次只能交換兩個數。 #include <stdio.h> int main() {int a[] = {10, 6, 9, 5, 2, 8, 4, 7, 1, 3};int i, tmp;int len = sizeof(a) / sizeof(a[0]);for(i = 0; i < len;) {tmp = a[a[i] - 1];a[a[i] - 1] = a[i];a[i] = tmp;if(a[i] == i + 1) i++;}for(i = 0; i < len; ++i)printf("%d ", a[i]);printf("\n");return 0; }

?

6. 易誤解:如果int a[5], 那么a與&a是等價的,因為兩者地址相同。 解答:一定要注意a與&a是不一樣的,雖然兩者地址相同,但意義不一樣,&a是整個數組對象的首地址,而a是數組首地址,也就是a[0]的地址,a的類型是int[5],a[0]的類型是int,因此&a+1相當于a的地址值加上sizeof(int) * 5,也就是a[5],下一個對象的地址,已經越界了,而a+1相當于a的地址加上sizeof(int),即a[1]的地址。 7. 如何將一個小數分解成整數部分和小數部分? 要記得利用頭文件中的庫函數modf,下面是函數原型(記住一些實用的庫函數,避免自己重寫): double modf(double num, double *i); // 將num分解為整數部分*i和小數部分(返回值決定)

?

8. 可作為函數重載判斷依據的有:參數個數、參數類型、const修飾符; ? ?不可以作為重載判斷依據的有:返回類型。 9. 程序輸出題: int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *p = &(a + 1)[3]; printf("%d\n", *p);

輸出:5

說明:因為a+1指向a的第二個元素,[3]表示再向后移動3個元素。 10. 程序輸出題: char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc";const char str4[] = "abc";const char *str5 = "abc";const char *str6 = "abc";char *str7 = "abc";char *str8 = "abc";cout << (str1 == str2) << endl;cout << (str3 == str4) << endl;cout << (str5 == str6) << endl;cout << (str7 == str8) << endl;

輸出:0 0 1 1

說明:輸出str1~str8的地址為: 0x23aa80 0x23aa70 0x23aa60 0x23aa50 0x23aa48 0x23aa40 0x23aa38 0x23aa30 輸出str1~str8內容“abc”的存儲地址為: 0x23aa80 0x23aa70 0x23aa60 0x23aa50 0x100403030 0x100403030 0x100403030 0x100403030 可以發現str1~str4中的內容是存在棧上,地址各不相同,而str5~str8的內容都是存儲在常量區,所以地址都相同。 注意: char *str = "abc"; printf("%p\n", str1); cout << &str1 << endl;

上面打印的是字符串 “abc”的地址,下面打印的是 str1 變量的地址。

11. C的結構體和C++結構體的區別 (1)C的結構體內不允許有函數存在,C++允許有內部成員函數,且允許該函數是虛函數。所以C的結構體是沒有構造函數、析構函數、和this指針的。 (2)C的結構體對內部成員變量的訪問權限只能是public,而C++允許public,protected,private三種。 (3)C語言的結構體是不可以繼承的,C++的結構體是可以從其他的結構體或者類繼承過來的。 以上都是表面的區別,實際區別就是面向過程和面向對象編程思路的區別: C的結構體只是把數據變量給包裹起來了,并不涉及算法。 而C++是把數據變量及對這些數據變量的相關算法給封裝起來,并且給對這些數據和類不同的訪問權限。 C語言中是沒有類的概念的,但是C語言可以通過結構體內創建函數指針實現面向對象思想。 12. 如何在類中定義常量成員并為其初始化? 解答:只能在初始化列表里對const成員初始化,像下面這樣: class CBook { public:const double m_price;CBook() :m_price(8.8) { } };

下面的做法是錯誤的:

class CBook { public:const double m_price;CBook() {m_price = 8.8;} };

而下面的做法雖未報錯,但有個warning,也不推薦:

class CBook { public:const double m_price = 8.8; // 注意這里若沒有const則編譯出錯 CBook() { } };

?

13. 在定義類的成員函數時使用mutable關鍵字的作用是什么? 解答:當需要在const方法中修改對象的數據成員時,可以在數據成員前使用mutable關鍵字,防止出現編譯出錯。例子如下: class CBook { public:mutable double m_price; // 如果不加就會出錯CBook(double price) :m_price(price) { }double getPrice() const; // 定義const方法 }; double CBook::getPrice() const {m_price = 9.8;return m_price; }

?

14. 構造函數、拷貝構造函數、析構函數的調用點和順序問題,如下面這個例子輸出是什么? class CBook { public:CBook() {cout << "constructor is called.\n";}~CBook() {cout << "destructor is called.\n";} };void invoke(CBook book) { // 對象作為函數參數,如果這里加了個&就不是了,因為加了&后是引用方式傳遞,形參和實參指向同一塊地// 址,就不需要創建臨時對象,也就不需要調用拷貝構造函數了cout << "invoke is called.\n"; }int main() {CBook c;invoke(c); }

解答:注意拷貝構造函數在對象作為函數參數傳遞時被調用,注意是對象實例而不是對象引用。因此該題輸出如下:

constructor is called. invoke is called. destructor is called. // 在invoke函數調用結束時還要釋放拷貝構造函數創建的臨時對象,因此這里還調用了個析構函數 destructor is called.

?

引申:拷貝構造函數在哪些情況下被調用? (1)函數的參數為類對象且參數采用值傳遞方式; (2)將類對象做為函數的返回值。 15. C++中的explicit關鍵字有何作用? 解答:禁止將構造函數作為轉換函數,即禁止構造函數自動進行隱式類型轉換。 例如CBook中只有一個參數m_price,在構建對象時可以使用CBook c = 9.8這樣的隱式轉換,使用explicit防止這種轉換發生。 16. 在C++中,如果確定了某一個構造函數的創建過程,在該構造函數中如果調用了其它重載的構造函數,它將不會執行其它構造函數的初始化列表部分代碼,而是執行函數體代碼,此時已經退化成普通函數了。例子說明如下: class CBook { public:double m_price;CBook() {CBook(8.8);}CBook(double price) : m_price(price) { } }; int main() {CBook c;cout << c.m_price << endl; // 此時并不會輸出理想中的8.8 }

?

17. 靜態數據成員只能在全局區域進行初始化,而不能在類體中進行(構造函數中初始化也不行),且靜態數據成員不涉及對象,因此不受類訪問限定符的限制。 例子說明如下: class CBook { public:static double m_price; }; double CBook::m_price = 8.8; // 只能在這初始化,不能在CBook的構造函數或直接初始化

?

18. C++中可以重載的運算符:new/delete、new[]/delete[]、++等。 ? ? 不可以重載的運算符:、.、::、?:、sizeof、typeid、.、**、不能改變運算符的優先級。 引申:重載++和–時是怎么區分前綴++和后綴++的? 例如當編譯器看到++a(先自增)時,它就調用operator++(a); 但當編譯器看到a++時,它就調用operator++(a, int)。即編譯器通過調用不同的函數區別這兩種形式。 19. C++的多態性分為靜態多態和動態多態。 靜態多態性:編譯期間確定具體執行哪一項操作,主要是通過函數重載和運算符重載來實現的; 動態多態性:運行時確定具體執行哪一項操作,主要是通過虛函數來實現的。 20. 虛函數原理考點,例如下面程序的輸出是什么? class A { public:virtual void funa();virtual void funb();void func();static void fund();static int si; private:int i;char c; };

問:sizeof(A) = ?

解答: 關于類占用的內存空間,有以下幾點需要注意: (1)如果類中含有虛函數,則編譯器需要為類構建虛函數表,類中需要存儲一個指針指向這個虛函數表的首地址,注意不管有幾個虛函數,都只建立一張表,所有的虛函數地址都存在這張表里,類中只需要一個指針指向虛函數表首地址即可。 (2)類中的靜態成員是被類所有實例所共享的,它不計入sizeof計算的空間 (3)類中的普通函數或靜態普通函數都存儲在棧中,不計入sizeof計算的空間 (4)類成員采用字節對齊的方式分配空間 答案:12(32位系統)或16(64位系統) 21. 虛繼承的作用是什么? 在多繼承中,子類可能同時擁有多個父類,如果這些父類還有相同的父類(祖先類),那么在子類中就會有多份祖先類。例如,類B和類C都繼承與類A,如果類D派生于B和C,那么類D中就會有兩份A。為了防止在多繼承中子類存在重復的父類情況,可以在父類繼承時使用虛函數,即在類B和類C繼承類A時使用virtual關鍵字,例如: class B : virtual public A class C : virtual public A 注:因為多繼承會帶來很多復雜問題,因此要慎用。

出處:http://www.cnblogs.com/lanxuezaipiao/p/4127904.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的C/C++求职宝典21个重点笔记(常考笔试面试点)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久中文字幕视频 | 成人精品免费在线观看 | 少妇免费视频 | v片在线看 | 成人免费黄色小视频 | 亚洲激情图片 | 中国一级片在线观看 | 久久国产精品国语对白 | 91在线精品一区二区三区 | 日本少妇b | 亚洲自拍偷拍一区二区三区 | 天天干夜夜添 | 四虎国产成人精品免费一女五男 | 美女校花脱精光 | 手机av在线播放 | 国产精品入口66mio | 亚洲一卡二卡三卡四卡 | 国产精品乱码一区二区视频 | 欧美激情一区二区三区免费观看 | 国产精品极品 | 国产又粗又猛又爽免费视频 | 亚洲精品在线一区二区 | 国产精品伦 | 深田咏美av在线 | 伊人98 | 朝桐光在线观看 | 公肉吊粗大爽色翁浪妇视频 | 蜜臀久久99精品久久久久久 | 亚洲中文字幕视频一区 | 午夜爱爱网站 | 视频二区三区 | 夜夜躁日日躁狠狠久久av | 色婷婷av一区二区三区之红樱桃 | 日日噜噜噜噜人人爽亚洲精品 | 超碰在线日韩 | 69精品久久久久久久 | 日韩一级黄 | 操出白浆视频 | 激情四射av | 国产农村妇女毛片精品久久麻豆 | 女色综合 | 日本人视频69式jzzij | 超碰97av | 欧美激情在线观看 | 校园春色av| 91麻豆精品国产91久久久更新时间 | 玉蒲团在线 | 五月的婷婷 | av一区在线观看 | 丁香伊人网 | 亚洲天堂精品在线观看 | 国产aⅴ无码片毛片一级一区2 | 国产一区二区视频在线观看 | 人妻夜夜爽天天爽三区麻豆av网站 | 午夜三区 | 日韩欧美精品在线观看 | 欧美大片在线看 | 少妇高潮大叫好爽喷水 | 日韩欧美亚洲一区 | 黄色网页在线看 | 国产亚洲不卡 | 日本一区二区三区电影在线观看 | 亚洲xx网站 | 国产精品视频一二三 | 综合激情亚洲 | 永久免费汤不热视频 | 日本a级黄 | 精品一区二区在线免费观看 | 免费看一区二区三区 | 日韩精品高清在线观看 | 人人人妻人人澡人人爽欧美一区 | 九九激情网 | 一本色道久久综合亚洲精品 | 黑料av在线 | 一区二区三区四区精品视频 | 久久精品动漫 | 欧美一卡二卡三卡 | av香港经典三级级 在线 | 日日碰狠狠添天天爽无码av | 国产区亚洲区 | 日本r级电影在线观看 | 97人人人 | 亚洲美女性生活 | 日本黄色三级网站 | 亚洲大片免费观看 | 女人做爰全过程免费观看美女 | 在线成人一区 | 91av短视频 | 欧美国产日韩一区二区三区 | 精品国产丝袜一区二区三区乱码 | 青青草成人在线观看 | 91porny九色| 在线播放www | 91福利在线播放 | 日韩中文字幕久久 | 可以免费看的av | 午夜精品一区二区三区三上悠亚 | 日韩伊人久久 | 成人无码www在线看免费 |