原创 c++:函數堆棧調用(附加相關面經)

一、什麼是棧以及特點? 由編譯器自動分配和釋放,操作方式類似於數據結構中的棧。棧用於維護函數調用的上下文,離開了棧函數調用就沒法實現。 “先進後出” 在計算機系統中,棧被定義爲一個特殊的容器,用戶可以將數據壓入棧中,也可以將已經壓棧的數據

原创 c++:求嚴格上升子序列長度

嚴格上升子序列:子序列的元素是嚴格遞增的。      例:[5,1,6,2,4]的 嚴格上升子序列[1,2,4] 要求: 輸入:第1行一個數N,N爲序列的長度(2<=N<=50000)           第2~N+1行,每行一個數,對應

原创 C++:程序的編譯鏈接過程

預編譯階段:.i 刪除所有的“#define”,展開所有宏定義並進行文本替換 處理所有的條件預編譯指令,“#if”,“#ifdef”,“endif” 等,處理“#include”預編譯指令,將包含的文件插入到該編譯指令的位置 刪除所有的註

原创 c++:指針和引用的區別(相同點和不同點)

    引用         別名   一定要初始化   (int &c;  //error)  引用 不能引用 不可以取地址的數據(如常量)  引用不能改變  引用只能使用 引用變量 所引用的數據  底層使用指針支持,在所有變量使用的地

原创 C++: 函數重載(c++函數原型、函數重載要素)

1.c++函數原型 c++函數原型有3部分構成:返回值、函數名稱、形參 c語言函數原型只與函數名有關 2.函數重載三要素 函數重載是c++中多態中靜多態實現方法之一。 多態:靜態多態(函數重載、泛型編程)           動態多態(虛

原创 c語言:動態內存知識點(申請、釋放、free崩潰的原因)

動態內存 用戶無法確定空間大小,或者空間太大,棧上無法分配時,會採用動態內存分配,存放於堆(heap)區,不能通過變量名或數組名引用,只能通過指針引用. 1、在Windows操作系統中,堆中最大連續內存大概1.3G。 2、最大問題:內存泄

原创 Linux:常用git命令整理(入門版)

  總結一下git入門的一些命令: git config --global user.email “郵箱名”:綁定GitHub郵箱 git config --global user.name “Github名”:綁定GitHub git

原创 計算結構體的大小(字節對齊問題)

C代碼中定義的結構體是一塊連續內存,各成員按照定義的順序依次在其中存放。編譯器在完成語法分析後,需要計算它的大小,然後才能正確地爲結構體分配空間。爲了讓結構體的所有成員都能正確、快速地訪問,需要字節對齊。 字節對齊體現爲: 在成員之間可能

原创 c++多態:虛函數(爲什麼使用虛函數、那些函數能成爲虛函數)(一)

1、什麼是虛函數?來看看虛函數的官方定義: 在某基類中聲明爲 virtual 並在一個或多個派生類中被重新定義的成員函數,簡單來說,就是被virtual關鍵字修飾的成員函數。 作用:實現多態性(動多態),動多態又稱動態綁定或晚綁定。

原创 c語言:折半查找法(二分查找法)

折半查找法(half-interval search) 優點:比較次數少,查找速度快,平均性能好 缺點:是要求待查表爲有序表,且插入刪除困難。因此,折半查找方法適用於不經常變動而查找頻繁的有序列表。 注意:折半查找法僅適用於對已有順序的數

原创 c++:類的六個默認成員函數

什麼是類?類是擁有相同屬性和行爲的集合 類中有六個默認的成員函數分別是: 構造函數 析構函數 拷貝構造函數 賦值操作符重載函數 取地址操作符重載函數 const修飾的取地址操作符重載函數 接下來對前四個函數進行具體的分析 我們先定義一個空

原创 C:數組越界問題分析

首先,數組越界訪問是一個非常嚴重的問題,先看一個簡單的代碼: #include<stdio.h> int main() { int i; int arr[10]; for(i=0;i<=10;i++) { arr[i] = 0; pri

原创 經典例題:根據等式判斷系統採用什麼進制

例題一: 如果在某系統中,等式15*4=112成立,則系統採用的是幾進制? A.6     B.7     C.8      D.9 解題過程: (1)將等式左邊與右邊展開            (1*n+5)*4=1*n^2+1*n+2

原创 c++:智能指針(c++11版本unique_ptr、shared_ptr、weak_ptr)(二)

從前面的內容可以看出auto_ptr具有比較多的缺陷,使用時容易出錯。在C++ 11標準中出現了新的智能指針unique_ptr、 shared_ptr與weak_ptr等 一、unique_ptr 特點:所有權唯一,禁止拷貝和權限轉移

原创 c++:內聯函數(使用場景、注意事項、及相關面經)

內聯函數: 以inline修飾的函數叫做內聯函數,編譯階段C++編譯器會在調用內聯函數的地方直接展開,沒有函數壓棧的開銷。“空間換時間” 一、inline一般用於如下情況: 一個函數不斷地被重複調用(函數體小適宜) 函數只有簡單幾行,且函