原创 內存空間分配和各種常量與變量

還是要寫博客。 今天覆習了很多東西。做個簡要總結。當然說的都是4G運行內存,32位機下。 空間分配,高地址到低地址依次爲:內核,棧,堆,未被初始化的數據區,初始化的數據區,常量區,代碼段。 內核,不用講了。 棧:由高地址往低地址生

原创 線程安全訪問之互斥量、死鎖和條件變量

今天,我們來說說互斥量和條件變量的API 線程安全 因爲進程中的線程共享了進行的虛擬地址空間,因此,線程間的通信變得更加簡單,但是缺點也隨之而來。這個缺點是:缺少數據的安全訪問控制,容易造成數據混亂。因此,我們必須使用互斥量和條件

原创 Leetcode之最大公共前綴(C++)

今天,我們來講一下字符串的一道面試題:最大公共前綴。 題目描述 編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴,返回空字符串 ""。 示例 1: 輸入: ["flower","flow","flight"

原创 Leetcode之括號生成(C++)

今天,我們來看一下LeetCode的第22道題:括號生成 題目描述 給出 n 代表生成括號的對數,請你寫出一個函數,使其能夠生成所有可能的並且有效的括號組合。 例如,給出 n = 3,生成結果爲: [ "((()))",

原创 數據結構之Vector

今天,我們來模擬實現vector。 首先,我們來講一下vector的特性: 1:能夠存放各種類型的動態增容的順序容器 2:支持隨機訪問。 也就是說,他的對象創建之後,當插入一個數據時,可以自己動態的開闢空間,不需要程序員手動的開

原创 C++編程之new的用法以及其代碼書寫格式

首先第一句,new的作用是開闢空間並初始化,即開闢空間,調用類的構造函數。 在C++中,我們都是使用new來申請空間,delete釋放空間。C語言中,我們使用的是malloc申請空間,free釋放空間。二者的區別我們下面有講。值得

原创 C++編程之多態

不管今天講啥,我們先來說說重載,重寫,重定義的區別: 重載:函數名相同,參數列表不相同,返回類型可相同可不相同。 重寫:也叫覆蓋,在不同的作用域中(基類和派生類),函數名相同,參數相同,返回值相同(協變除外),基類函數必須含有vi

原创 劍指offer第一題----二維數組的查找

今天我們來聊一下二維數組的查找問題 題目描述: 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有

原创 學習C語言的第一天

2017年6月23號,也就是今天,我開始學習C語言了,很開心也很激動,畢竟這是我第一次正兒八經的接觸一門電腦語言。              今天,我們學習了C語言的一些基礎知識,有數據類型、自定義類型,常量,變量等等,有的能聽懂,有

原创 紅黑樹-RBTree

先來說說紅黑樹是什麼吧 紅黑樹也是一種二叉搜索樹,它給每個節點上存儲了一個來表示節點的顏色,可以是BLACK,也可以是RED。通過對任何一個從根節點到葉子節點路徑上的顏色的約束來達到一個近似平衡的一棵樹。紅黑樹要求最長路徑不超過最短路徑的

原创 模擬實現atoi函數

ATOI int atoi(con​​st char* p); 將C字符串轉化爲基數爲10的整數的函數。在第一個非空字符開始轉化。 參數 需要轉換的字符串 返回值 轉成好的整數,如果轉換完超出了int可以的範圍,則會返回int

原创 C/C++的動態內存管理

大家好,我今天來給大家講解一下C/C++的動態內存管理。 C:C當中一共有三個函數,他們分別是 ,malloc、calloc和realloc。free是動態內存的釋放。       malloc:1.動態內存分配。     2.它的參數是

原创 繼承

面向對象程序設計中最重要的一個概念是繼承。繼承允許我們依據另一個類來定義一個類,這使得創建和維護一個應用程序變得更容易。這樣做,也達到了重用代碼功能和提高執行時間的效果。 當創建一個類時,您不需要重新編寫新的數據成員和成員函數,只需指定

原创 菱形繼承

菱形繼承: 二義性:B裏有一個A,C裏也有一個A,D裏有一個B,也有一個C,也就是說A-B-D,A-C-D這樣的邏輯關係,但是A只有一個,更改B裏的A時,C裏的A沒有變化,更改C裏的A時,B裏的A沒有變化。爲了防止這樣的事情發生,應該添

原创 動態內存管理

爲什麼要使用動態內存分配? 當你聲明數組時,你必須用一個編譯時常量指定數組的長度,但是,數據的長度常常在運動時才知道,這是由於它所需要的內存空間取決於輸入數據。 話說C和C++的動態內存管理有什麼區別呢? 爲什麼C語言都有了malloc/