Time of Update: 2018-12-03
在上程式邏輯的第一節課,老師在教我們學習程式語言的方法的時候,提了一個問題:"變數和變數名有什麼區別",我覺得是它們是一樣的,肯定有一部分人都跟我的想法相同,在沒上課之前我自學過java語言,但是有很多東西很多知識點,都是只知道是這樣寫,根本不知道為什麼要這樣寫,所以每次看完書,過幾天又忘了,所以在每碰到一個新知識點的時候應該多問為什麼要這樣,只有理解後才不容易忘記,說了一些學習方法,有點囉嗦,現在進入正題.
Time of Update: 2018-12-03
new操作符(new operator)與operator new的關係,你想在堆上建立一個對象,應該用new操作符。它既分配記憶體又為對象調用建構函式。如果你僅僅想分配記憶體,就應該調用operator new函數;它不會調用建構函式。如果你想定製自己的在堆對象被建立時的記憶體配置過程,你應該寫你自己的operator new函數,然後使用new操作符,new操作符會調用你定製的operator new。如果你想在一塊已經獲得指標的記憶體裡建立一個對象,應該用placement
Time of Update: 2018-12-03
如果一個人自稱為程式高手,卻對記憶體一無所知,那麼我可以告訴你,他一定在吹牛。用C或C++寫程式,需要更多地關注記憶體,這不僅僅是因為記憶體的分配是否合理直接影響著程式的效率和效能,更為主要的是,當我們操作記憶體的時候一不小心就會出現問題,而且很多時候,這些問題都是不易發覺的,比如記憶體流失,比如懸掛指標。筆者今天在這裡並不是要討論如何避免這些問題,而是想從另外一個角度來認識C++記憶體對象。
Time of Update: 2018-12-03
之前不太喜歡C#,無意中發現linq,用來實現排序是如此簡單,所以又用C#寫了遍發牌程式using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { /
Time of Update: 2018-12-03
轉自:http://www.cppblog.com/Lee/articles/56247.html封裝 (encapsulation)封裝就是將抽象得到的資料和行為(或功能)相結合,形成一個有機的整體,也就是將資料與操作資料的原始碼進行有機的結合,形成“類”,其中資料和函數都是類的成員。封裝的目的是增強安全性和簡化編程,使用者不必瞭解具體的實現細節,而只是要通過 外部介面,一特定的存取權限來使用類的成員。例如,在抽象的基礎上,我們可以將時鐘的資料和功能封裝起來,構成一個時鐘類。按c++的文法,
Time of Update: 2018-12-03
讓 Android 的 libc, 和標準的 libc 共存, 讓兩種不同連結方式的 C 程式一起運行。以前總有人說 C 程式在 Andriod 上只能靜態連結, 其實不是, Andriod C是可以用 Andriod 提供的工具鏈編譯成動態連結的。如果用其他 arm gcc, 就只能編譯成靜態。但是,但是但是。。。。 我今天看到 動態連結的了,而且不是用 Andriod 的工具鏈,而是用的普通的 arm-linux-gcc.我要弄明白為什麼,是怎麼實現的。 他們,他們怎麼能共存??????
Time of Update: 2018-12-03
_____題記:本想記在本子上的,實在沒找到筆,就寫到部落格中,記錄工作中的容易犯的低級錯誤。這些低級錯誤實在不應該,太影響工作效率,更讓人覺得水平很低。1.關於資料移位和轉換char i = 0xA0; // i 的十進位值 是-96, 在x86電腦中 16進位表示是 0xFFFFFFA0 ULONG res = (ULONG)i; // 強制轉換後的res 變成一個很大的數字,再對res 移位操作自然會出錯。 小結: x86
Time of Update: 2018-12-03
C風格的DLL匯出函數的典型方法說到底,DLL是對應C語言的動態連結技術,在輸出C函數和變數時顯得方便快捷所以寫DLL檔案最典型的一種Case:不用C++的類而都是C風格的代碼這種情況要匯出函數,有兩種方式:第一種:函數前加相應修飾符#ifdef __cplusplus #define EXPORT extern "C" __declspec (dllexport)#else#define EXPORT __declspec (dllexport)#endif然後在每一個要匯出的函數前面加EX
Time of Update: 2018-12-03
在我們寫的程式當中,總有一些配置資訊需要儲存下來,以便完成程式的功能,最簡單的辦法就是將這些資訊寫入INI檔案中,程式初始化時再讀入.具體應用如下: 一.將資訊寫入.INI檔案中. 1.所用的WINAPI函數原型為: BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName); 其中各參數的意義: LPCTSTR lpAppName
Time of Update: 2018-12-03
1、什麼是const? 常類型是指使用類型修飾符const說明的類型,常類型的變數或對象的值是不能被更新的。(當然,我們可以偷梁換柱進行更新:)2、為什麼引入const? const 推出的初始目的,正是為了取代先行編譯指令,消除它的缺點,同時繼承它的優點。3、cons有什麼主要的作用? (1)可以定義const常量,具有不可變性。 例如: const int Max=100; int Array[Max];
Time of Update: 2018-12-03
在csdn上看到很多很多初學網友的關於指標,數組的疑問,我知道,對於一個好學的人來書,怎麼做不重要,關鍵是為什麼要這樣做 在csdn上看到很多很多初學網友的關於指標,數組的疑問,我知道,對於一個好學的人來書,怎麼做不重要,關鍵是為什麼要這樣做,只有深入到這一步了,才敢說‘阿,我懂了’,於是,以後碰到類似的問題,就可以從我們知道的原理出發,悠然自得而又滿懷信心地推匯出正確的結果。然而,好學的人往往註定了困惑於一時的不解,並且,付出過多的時間去試圖解決這種迷惑不解,其中的辛苦是可想而知的,因為,我就
Time of Update: 2018-12-03
前言: 本文只是本人對C++中關於靜態類型的一個總結,如錯誤之處,請大家幫我改正。我分兩個方面來總結,第一方面主要是相對於面向過程而言,即在這方面不涉及到類,第二方面相對於物件導向而言,主要說明static在類中的作用。一、在面向過程設計中的static關鍵字1、靜態全域變數定義:在全域變數前,加上關鍵字 static
Time of Update: 2018-12-03
1、什麼是sizeof 首先看一下sizeof在msdn上的定義: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t. 看到return這個字眼,是不是想到了函數?錯了,sizeof不是一個函數,
Time of Update: 2018-12-03
在C和C + +中,s t a t i c都有兩種基本的含義,並且這兩種含義經常是互相有衝突的:1) 在固定的地址上分配,也就是說對象是在一個特殊的待用資料區上建立的,而不是每次函數調用時在堆棧上產生的。這也是靜態儲存的概念。2) 對一個特定的編譯模組來說是本地的(就像我們在後面將要看到的,這在C + +中包括類的範圍)。這裡s t a t i
Time of Update: 2018-12-03
一、C 風格(C-style)強制轉型如下: (T) expression // cast expression to be of type T 函數風格(Function-style)強制轉型使用這樣的文法: T(expression) // cast expression to be of type T 這兩種形式之間沒有本質上的不同,它純粹就是一個把括弧放在哪的問題。我把這兩種形式稱為舊風格(old-style)的強制轉型。 二、
Time of Update: 2018-12-03
Bill Gates 曾經失言: 640K ought to be enough for everybody — Bill Gates 1981 C++程式員們經常編寫記憶體管理程式,往往提心弔膽。如果不想觸雷,唯一的解決辦法就是發現所有潛伏的地雷並且排除它們,躲是躲不了的。本文的內容比一般教科書的要深入得多,讀者需細心閱讀,做到真正地通曉記憶體管理。 1、記憶體配置方式 記憶體配置方式有三種:
Time of Update: 2018-12-03
對於C++而言,是一種無格式的語言,編譯器會忽略所有的空格,斷行符號標記,分行符號等等,並把所有這些統稱為空白。 然後我們來說說標示符的命名,首先,那些基本的概念要有哦;第二,最好不要以底線開頭;第三,不要以跟關鍵字相近的名字命名,比如INT,Return等等。 然後程式的步驟,編輯,編譯,連結,運行和測試。 對於C++而言,是一種無格式的語言,編譯器會忽略所有的空格,斷行符號標記,分行符號等等,並把所有這些統稱為空白。 C++語言區分大小寫!
Time of Update: 2018-12-03
在使用C++編程的過程當中,常常需要對類成員進行初始化,通常的方法有兩種: 第一種方法: CMYClass::CSomeClass(){ x=0; y=1;}第二種方法: CSomeClass::CSomeClass() : x(0), y(1){} 從技術上說,第二種方法比較好,但是在大多數情況下,兩者實際上沒有什麼區別。第二種文法被稱為成員初始化列表,之所以要使用這種文法有兩個原因:一個原因是必須這麼做,另一個原因是出於效率考慮。
Time of Update: 2018-12-03
前篇已經說明編程時,拿到演算法後該乾的第一件事就是把資源地圖成數字,而前面也說過“類型就是人為制訂的如何解釋記憶體中的位元的協議”,也就是說一個數字對應著一塊記憶體(可能4位元組,也可能20位元組),而這個數位類型則是附加資訊,以告訴編譯器當發現有對那塊記憶體的動作陳述式(即某種操作符)時,要如何編寫機器指令以實現那個操作。比如兩個char類型的數字進行加法操作符操作,編譯器編譯出來的機器指令就和兩個long類型的數字進行加法操作的不一樣,也就是所謂的“如何解釋記憶體中的位元的協議”。由於解釋協
Time of Update: 2018-12-03
This article is a revised version of a opinion piece by Steve Donovan for the now-defunct British developer's magazine EXE (January 2000). Every decade or so, a new fashion in programming comes along and announces itself the successor to previous