Time of Update: 2017-01-18
#define ASPECT_RATIO
Time of Update: 2017-01-18
有些資料在儲存時並不需要佔用一個完整的位元組,只需要佔用一個或幾個二進位位即可。例如開關只有通電和斷電兩種狀態,用 0 和 1 表示足以,也就是用一個二進位。正是基於這種考慮,C語言又提供了一種叫做位域的資料結構。在結構體定義時,我們可以指定某個成員變數所佔用的二進位位元(Bit),這就是位域。請看下面的例子:struct bs{ unsigned m; unsigned n: 4; unsigned char ch: 6;}:後面的數字用來限定成員變數佔用的位元。成員 m
Time of Update: 2017-01-18
指標與引用看上去完全不同(指標用操作符“*”和“->”,引用使用操作符“.”),但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他對象。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?
Time of Update: 2017-01-18
由C#轉入Java一段時間了,總結下個人認為的Java同C#文法之間的不同之處,有不同意見之處還望各位海涵 剛學Java時覺得文法同C#大致是相同的(應該說C#同Java大致相同,畢竟人家微軟的C#是有意模仿Java的文法習慣的) 比爾.蓋茨曾經說過:“Java是最卓越的程式設計語言” 言歸正傳,下面探討Java同C#的文法不同之處。。。 1,命名空間與包 C#為了把實現相似功能的類組織在一起,引入了命名空間的概念(namespace) Java中與此對應的東西叫做包(package)
Time of Update: 2017-01-18
C++對象可以使用兩種方式進行建立:建構函式和複製建構函式。假如我們定義了類A,並使用它建立對象。複製代碼 代碼如下:A a,b; A c=a; A d(b);對象a和b使用編譯器提供的預設建構函式A::A()建立出來,我們稱這種建立方式為對象的定義(包含聲明的含義)。對象c和d則是使用已有的對象,通過編譯器提供的複製建構函式A::A(const A&)建立,我們稱這種建立方式為對象的初始化(包含定義和聲明的含義)。可能不少人會把對象的初始化和對象的賦值混淆,比如。複製代碼 代碼如下:c=d;
Time of Update: 2017-01-18
數組(Array)是一系列具有相同類型的資料的集合,每一份資料叫做一個數組元素(Element)。數組中的所有元素在記憶體中是連續排列的,整個數組佔用的是一塊記憶體。以int arr[] = { 99, 15, 100, 888, 252 };為例,該數組在記憶體中的分布如下圖所示:定義數組時,要給出數組名和數組長度,數組名可以認為是一個指標,它指向數組的第 0 個元素。在C語言中,我們將第 0 個元素的地址稱為數組的首地址。以上面的數組為例,下圖是 arr
Time of Update: 2017-01-18
指標變數儲存的是地址,本質上是一個整數,可以進行部分運算,例如加法、減法、比較等,請看下面的代碼:#include <stdio.h>int main(){ int a = 10, *pa = &a, *paa = &a; double b = 99.9, *pb = &b; char c = '@', *pc = &c; //最初的值 printf("&a=%#X, pa=%#X, pb=%#X, pc=%#X\n", &a, pa, pb, pc);
Time of Update: 2017-01-18
實現順序表的插入,刪除,尋找,輸出操作在C語言中經常用到。下面小編給大家整理實現代碼,一起看下吧代碼如下所示:#include<iostream>using namespace std;#define MAXSIZE 15typedef int DataType;typedef struct{DataType data[MAXSIZE]; //通常用一位元組來描述順序表的資料存放區int SeqLength; /*線性表長度*/} SeqList;SeqList
Time of Update: 2017-01-18
前言 我們知道,在數學中,數值的大小是沒有上限的,但是在電腦中,由於字長的限制,電腦所能表示的範圍是有限的,當我們對比較小的數進行運算時,如:1234+5678,這樣的數值並沒有超出電腦的表示範圍,所以可以運算。但是當我們在實際的應用中進行大量的資料處理時,會發現參與運算的數往往超過電腦的基礎資料型別 (Elementary Data
Time of Update: 2017-01-18
本文針對C++建構函式進行深度探究,供大家參考,具體內容如下1、引子: 以下代碼中的輸出語句輸出0嗎,為什嗎?struct Test{ int _a; Test(int a) : _a(a) {} Test() { Test(0); }};Test obj;cout << obj._a << endl; 輸出為:-8589934602、剖析上面代碼的輸出為一個垃圾值,也就是說obj調用建構函式並沒有對成員進行初始化工作,雖然預設無參構造Test(
Time of Update: 2017-01-18
如果你覺得重新編譯檔案的時間很短或者時間長一點無所謂,反正需要重新編譯,那麼你也可以選擇略過此文,不過也建議瀏覽。如果你想學習或者關心這塊內容,那麼此文必定會給你帶來收穫。首先我不給出依存關係的定義,我給出一個例子。複製代碼 代碼如下: class Peopel{ public: People(const std::string & name,const Date& brithday,Image Img)
Time of Update: 2017-01-18
下面詳細介紹 一、初始化與初始賦值 首先說說類的初始化與初始賦值之前的區別,這也許裡面可能有我們不知道的事情。 其實類初始化與初始賦值還是有區別的。 複製代碼 代碼如下: class People{ public: People(std::string name,int age,int height); private: std::string m_sName; int m_iAge; int m_iHeight; } //賦值 People::People(std::string
Time of Update: 2017-01-18
C++中的return語句是函數中一個重要的語句,return語句用於結束當前正在執行的函數,並將控制權返回給調用此函數的函數。return語句有兩種形式: return; return expression; 1、沒有傳回值的函數 不帶傳回值的return語句只能用於傳回型別為void的函數,return語句是為了引起函數的強制結束,這種用法類似於迴圈結構中的break語句的作用。 例子: 複製代碼 代碼如下: void swap(int &v1,int &v2) { if(v1==v2)
Time of Update: 2017-01-18
問題 C語言以及C++語言中的const究竟表示什嗎?其具體的實現機制又是如何?的呢? 本文將對這兩個問題進行一些分析,簡單解釋const的含義以及實現機制。 問題分析 簡單的說const在C語言中表示唯讀變數,而在C++語言中表示常量。關於const在C與C++語言中的使用以及更多的區別,以後有時間另開一貼說明。那麼const究竟是如何?的呢?
Time of Update: 2017-01-18
只有公用衍生類別才是基類真正的子類型,它完整地繼承了基類的功能。基類與衍生類別對象之間有賦值相容關係,由於衍生類別中包含從基類繼承的成員,因此可以將衍生類別的值賦給基類對象,在用到基類對象的時候可以用其子類對象代替。 具體表現在以下幾個方面: 衍生類別對象可以向基類對象賦值。 可以用子類(即公用衍生類別)對象對其基類對象賦值。如 A a1; //定義基類A對象a1 B b1; //定義類A的公用衍生類別B的對象b1 a1=b1; //用衍生類別B對象b1對基類對象a1賦值
Time of Update: 2017-01-18
這樣刪除會導致程式記憶體覆蓋等一系列不可預知的bug 複製代碼 代碼如下: map<string, string>::iterator iter; for ( iter = mm.begin();iter != mm.end(); iter ++ ) { if ( iter->second == something ) { mm.erase( iter ); } } 原因:當erase掉iter後,繼續執行iter++,這個時候就亂套了 正確方法: 複製代碼 代碼如下:
Time of Update: 2017-01-18
簡介 類比銀行的錢數大寫輸出例如345三肆伍方法/步驟 首先開啟VC++ 檔案》》》建立 建立一個C++空白文檔 先聲明標頭檔複製代碼 代碼如下:#include<stdio.h> 聲明變數複製代碼 代碼如下:char *p[10]={"零","一","二","三","四","五","六","七","八","九"}; 由於用到了自訂函數,所以先聲明複製代碼 代碼如下:void PrintInterger(char a[], int len);/*輸出整數部分 */
Time of Update: 2017-01-18
1、右值引用引入的背景 臨時對象的產生和拷貝所帶來的效率折損,一直是C++所為人詬病的問題。但是C++標準允許編譯器對於臨時對象的產生具有完全的自由度,從而發展出了CopyElision、RVO(包括NRVO)等編譯器最佳化技術,它們可以防止某些情況下臨時對象產生和拷貝。下面簡單地介紹一下CopyElision、RVO,對此不感興趣的可以直接跳過: (1)CopyElision CopyElision技術是為了防止某些不必要的臨時對象產生和拷貝,例如: 複製代碼 代碼如下: structA{
Time of Update: 2017-01-18
即會作一定的判斷。 對指標進行dynamic_cast,失敗返回null,成功返回正常cast後的對象指標; 對引用進行dynamic_cast,失敗拋出一個異常,成功返回正常cast後的對象引用。
Time of Update: 2017-01-18
這篇C語言指標學習經驗總結主要是我入職以來學習C指標過程中的點滴記錄。文檔裡面就不重複書上說得很清楚的概念性東西,只把一些說得不清楚或理解起來比較費解的東西做一下講解,希望能達到以下三個目的1.通過寫這些東西,把我腦袋中關於C的模糊的知識清晰化。2.給初轉C的同事們一點提示和協助。3.也希望各位前輩檢查一下文檔中是否有理解偏差的地方。1 指標的概念分解