1. 程式人生 > >牛客網C++題目總結(一)

牛客網C++題目總結(一)

準備從今天開始好好在牛客網上練習一些題提高程式碼能力,最近不知道在幹些什麼,所以想現在開始寫總結。

一、函式指標的定義:

C++指向函式的指標定義方式為:返回型別  (*指標名)  (函式引數列表)  ,例如 void (*p)(int)是指向一個返回值為void 引數為int型別的函式例如 : void (*q)(Base,Base)
就是一個返回型別為void,引數列表有兩個Base(這裡是類名)類的引數

二、運算的一些注意點:

下列程式的輸出結果為()。
123456main(){int m=7,n=4;float a=38.4,b=6.4,x;x=m/2+n*a/b+1/2;printf("%f\n",x);
}例如上面這道題,顯示結果為27.000000,原因是m為整型變數,m/2雖然為3.5,但是因為是整型,就取
的3。同理1/2位0,所以結果就是27.000000而不是28.000000。

三、記憶體對齊原則:

一、結構體變數的首地址能夠被其最寬基本型別成員大小與對齊基數中的較小者所整除;
二、結構體每個成員相對於結構體首地址的偏移量(offset)都是該成員大小與對齊基數中的較小者的整數倍,如有需要編譯器會在成員之間加上填充位元組(internal adding);

三、結構體的總大小為結構體最寬基本型別成員大小與對齊基數中的較小者的整數倍,如有需要編譯器會在最末一個成員之後加上填充位元組(trailing padding)

在32位系統環境,編譯選項為4位元組對齊,那麼sizeof(A)和sizeof(B)是: 
1234567891011121314struct A{int a;short b;int c;char d;};struct B{int a;short b;char c;int d;}

結構體(struct)(或聯合體(union))的資料成員,每個資料成員的對齊按照編譯選項指定的資料成員自身長度中,最長的那個。
A:
4(int)+4(short不夠4,補2)+4(int)+4(char 不夠4,補3) = 16
B:
4(int)+4(char 為1,short為2 ,補1)+4(int) = 12

四、虛擬函式的應用:

以下程式的輸出是
12345678910111213141516171819202122232425262728293031323334class Base {public:Base(int j): i(j)  {}virtual~Base() {}void func1() {i *= 10;func2();}int getValue() {return  i;}protected:virtual void func2() {i++;}protected:int i;};class Child: public Base {public:Child(int j): Base(j) {}void func1() {i *= 100;func2();}protected:void func2() {i += 2;}};int main() {Base * pb = new Child(1);pb->func1();cout << pb->getValue() << endl; delete pb; }
最後的輸出是12,原因為:
基類的指標指向派生類的物件
基類指標呼叫其虛成員函式,則會呼叫其真正指向物件的成員函式,而不是基類中定義的成員函式,若不是虛擬函式,則不管基類指標指向的是哪個派生物件,呼叫的都是基類中定義的那個函式。
其他也沒什麼學到的新知識了,主要是不細心,這一點很難受

相關推薦

C++題目總結

準備從今天開始好好在牛客網上練習一些題提高程式碼能力,最近不知道在幹些什麼,所以想現在開始寫總結。一、函式指標的定義:C++指向函式的指標定義方式為:返回型別  (*指標名)  (函式引數列表)  ,例如 void (*p)(int)是指向一個返回值為void 引數為int型

c++做題筆記

一邊做題一邊思考,才能夠提高學習的效率。為了加深記憶,將每天做的題的筆記記錄在部落格上。 1. 字元陣列與字串 char a[] = {'a','b'}; char b[] = {"ab"}; b陣列比a陣列多一個‘\0’。b為字串常量,a為字元陣列。

做題總結1

 在牛客網上做了一 些題,過來總結一下問題    1.陣列   二維陣列第一維長度代表每一列的元素個數,第二維代表每一行的元素個數且不能省略    2.關於類成員函式的過載,覆蓋和隱藏:     

輸入規範總結c++部分

注意:輸入的多組輸入,不是一組,已經猜了很多次坑了哦!   輸入 預先不輸入資料的組數 while(cin>>a>>b){ cout<<a+b<<endl; }   預先知道資料組數 cin>

C++知識點整理持續更新

1.堆疊的使用 棧 在Windows下,棧是向低地址擴充套件的資料結構,是一塊連續的記憶體的區域。這句話的意思是棧頂的地址和棧的最大容量是系統預先規定好的,在WINDOWS下,棧的大小是2M(也有的說是1M,總之是一個編譯時就確定的常數),如果申請的空間

LeetCode題目總結

括號匹配 比較 最長 github上 三種 https 就是 最長回文 符號 我的代碼在github上,https://github.com/WINTERFELLS/LeetCode-Answers 這裏只提供個人的解題思路,不一定是最好的。 Problems1-20 尋

—資料庫SQL實戰2

11. 獲取所有員工當前的manager 獲取所有員工當前的manager,如果當前的manager是自己的話結果不顯示,當前表示to_date='9999-01-01'。 結果第一列給出當前員工的emp_no,第二列給出其manager對應的manager_no。 CRE

刷題手記2

css佈局中的BFC:block formatting context,塊級格式化上下文,是指一個獨立的塊級渲染區域( formatting context擁有一套渲染規則,決定了子元素如何定位,以及與其他元素的相互關係和作用),就是頁面上的一個隔離的獨立容器,容器裡面的子元素是不會影響到外面的元素,規定了

C++面試總結常用關鍵字

1.簡述volatile的用法    有些變數是用volatile關鍵字宣告的。當兩個執行緒都要用到某一個變數且該變數的值會被改變時,應該用volatile宣告,該關鍵字的作用是防止優化編譯器把變數從記憶體裝入cpu暫存器中。volatile的意思是讓編譯器每次操作該變數時一

前端面試題目總結

1.判斷下面輸出內容,並嘗試怎樣正確輸出0,1,2,3,4,5 for (var i = 0; i <= 5; i++) {     setTimeout(function timer(){ console.log(i) }, i * 1000) } /

畢業後就是程式設計師——我的阿里、金山、中華、騰訊、360、易面試總結

 再開始我的部落格之旅。東奔西跑的忙了一個多月,找工作的事算是告一段落;這段時間有興奮,有失落,有迷惘,也有開心,是一個讓自己得到鍛鍊,得到提升的好機會,是一段難忘的時光,記錄下留作紀念,也希望能給同樣要走這一段路的人一點提醒,免得像我一樣,當碰得頭破血流之時才不得不去承認

C#工作總結:Fleck的WebSocket使用

一.引子(Foreword)      最近公司裡面要做窗體和網頁互動的功能。網上找了一下資料,這裡做一個簡單的擴充和整理,部分內容可能是摘自其他部落格,這裡會註明出處和原文地址供大家和自己日後查閱。二.基礎知識(Foundation)(1). WebSocket介紹    

博弈論題目總結——組合遊戲

復讀 滿足 har 坐標 getc 當前 ++ 維護 人類 人類的本質是什麽呢?復讀機?鴿子? 博弈問題是很有意思的一類題目 我講的可能不是很明白,但題目都不難建議自己思考 組合遊戲的特點: 1.兩個人博弈,輪流做出最優決策 2.玩家在每個時刻做出的決策都是

刷題筆記編程基礎

index -- 判斷 asc 疊加 加法 -i 元素 else 題目一:二維數組中的查找 題目描述: 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,

做題總結:劍指offer中題目,java版

1、陣列中重複的數字 在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是重複的數

Leetcode+—迴文串總結

題目一:       大家對迴文串不陌生吧?一個字串從前看和從後看如果一樣的話,就是迴文串。比如“上海自來水來自海上”就是一個迴文串。現在我們的問題來了,把一個數字看成字串,問它是不是一個迴文數?這麼簡

C++ 做題總結

      20天的刷完1234道牛客網C++題,正確率嘛,還算可以,一般~ 1:正確率63% 2:查缺補漏,複習了非常非常多的知識點:牛客網做題筆記 3:當時主要的目的是為了筆試做準備的,找工作的

絡駭入門之絡編程絡應知應會

網絡網絡駭客入門之網絡編程(一):網絡應知應會一、計算機網絡在設計之初就決定了它結構簡單,傳輸可靠的特點,除此之外,它還能連接不同種類的計算機在網絡上,各個節點同等重要且必須有冗余路由二、網絡在理論上被分為七層,從下到上,物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層在實際的應用上分為四層,即:鏈

libfastcommon總結加載主機上所有卡的IPv4的地址

輸出結果 common ret stc 結果 local ast 頭文件 網卡 頭文件為local_ip_func.h 主要接口 load_local_host_ip_addrs();//加載主機網口所有IPv4地址到列表 print_local_host_i

——陣列中只出現次的數字

題目描述 一個整型數組裡除了兩個數字之外,其他的數字都出現了偶數次。請寫程式找出這兩個只出現一次的數字。 1實在沒想到什麼好的解決方法,就用TreeSet解決,因為底層是紅黑樹實現,增加,刪除結點是logn,所以複雜度為O(nlogn) package 劍指offer;