Time of Update: 2018-12-08
#pragma#pragma 預先處理指令詳解 在所有的預先處理指令中,#Pragma 指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。#pragma指令對每個編譯器給出了一個方法,在保持與C和 C++語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器或作業系統專有的,且對於每個編譯器都是不同的。 其格式一般為: #Pragma
Time of Update: 2018-12-08
是不是只有編譯的時候才知道程式寫了錯誤?有沒有在未編譯的時候就讓機器幫你檢查錯誤的工具呢?答案是:有!!splint工具.用一個最簡單的HELLO WORLD來表述:=====================================複製代碼 代碼如下:/*錯誤很明顯*/#include <stdio.h>int main(void){ print("hello world\n", s); return}---------------------------------
Time of Update: 2018-12-08
在寫一個練習時候出現的.覺得奇怪,因為翻譯說缺少哨兵??什麼意思呢...=====================================複製代碼 代碼如下:/*//練習如下,建立一個進程*/#include <unistd.h>#include <stdio.h>#include <stdlib.h>int main(void){ printf("Running ps with execlp\n"); execlp("ps", "ps", "
Time of Update: 2018-12-08
自認為C語言還算入門的人,看來還是高估自己了.沒想到在這個地方還有這麼有趣的東西.有些話看來要仔細深究才能真正入門啊....================================================================================複製代碼 代碼如下:#include <stdio.h> int main(void) { int flag=0; for(int j=0; j <2; j++) { if(
Time of Update: 2018-12-08
舉例:===================================================複製代碼 代碼如下:/** INITRM - Initialization of internal ram position register; 0x0000 0010 **/typedef union { byte Byte; struct { byte RAMHAL :1; byte :1; byte :1; byte RAM11 :1;
Time of Update: 2018-12-08
ExpandoObject:表示一個對象,該對象包含可在運行時動態添加和移除的成員。 複製代碼 代碼如下:dynamic dynEO = new ExpandoObject();dynEO.number = 10;dynEO.Increment = new Action(() => { dynEO.number++;
Time of Update: 2018-12-08
建立類Product:複製代碼 代碼如下:class Product{ public string name; public int Id { get; set; } public void ShowProduct() { Console.WriteLine("Id={0} ,Name={1}", Id, name); }}Main方法代碼如下:複製代碼 代碼如下:static void Main(string[] args){
Time of Update: 2018-12-08
題目在這裡:Question:基於C#連續賦值的面試題介紹在msdn中,對=號操作符的說明如下:賦值運算子 ( =) 將右運算元的值儲存在左運算元表示的儲存位置、屬性或索引器中,並將值作為結果返回。運算元的類型必須相同(即右運算元必須可以隱式轉換為左運算元的類型)。首先來看int x,y,z;X = y = z = 1;1:z=1,將1賦值給z,接著返回1,2:y=(z=1),將返回的1賦值給y,並返回1,3:x=(y=(z=1)),將運算式2的結果1賦值給x。接著看第一道題:const
Time of Update: 2018-12-08
以前在CodeProject上看到了一篇文章:MBG Extensions Library 大致是作者在介紹自己寫的擴充方法類庫,內容如下:In()複製代碼 代碼如下:if (myString == "val1" || myString == "val2" || myString == "val3" || myString == "val4" || myString == "val5") { //Do something
Time of Update: 2018-12-08
C# 4.0提供了一個dynamic 關鍵字,那麼什麼是dynamic,究竟dynamic是如何工作的呢?從最簡單的樣本開始:複製代碼 代碼如下:static void Main(string[] args) { dynamic dyn = 1; object obj = 1; //在編譯時間將滑鼠放到 ”dyn” 和”obj”中可以發現: // dyn:局部變數 dynamic (dyn)
Time of Update: 2018-12-08
我們知道C#中 a=b=c;是合法的,例如:int i,j,k;i=j=k=1;下面有兩道題:第一題:複製代碼 代碼如下: const int x=1; short y; object z; z=y=x; //請問下面的輸出是什麼? Console.WriteLine(z.GetType().ToString());第二題:複製代碼 代碼如下:class C { private string x; public string X {
Time of Update: 2018-12-08
1: .net framework 由兩個部分組成:CLR 和
Time of Update: 2018-12-08
方法一、利用控制項或表單的Paint事件中的PainEventArgs在表單或控制項的Paint事件中接收對繪圖物件的引用,作為PaintEventArgs(PaintEventArgs指定繪製控制項所用的Graphics)的一部分,在為控制項建立繪製代碼時,通常會使用此方法來擷取對繪圖物件的引用。例如://表單的Paint事件的回應程式法複製代碼 代碼如下:private void form1_Paint(object sender, PaintEventArgs e) {
Time of Update: 2018-12-08
STL提供六大組件,彼此可以組合套用1、容器(containers):各種資料結構,如vertor,list,deque,set,map.從實現的角度來看,STL容器是一種class template2、演算法(algorithms):各種演算法如sort,search,copy,earse。STL演算法是一種 function
Time of Update: 2018-12-08
1.純C實現複製代碼 代碼如下: FILE *fp; if ((fp = fopen("example.txt", "rb")) == NULL) { exit(0); } fseek(fp, 0, SEEK_END); int fileLen = ftell(fp); char *tmp = (char *) malloc(sizeof(char) * fileLen); fseek(fp, 0, SEEK_SET); fread(tmp, fileLen, sizeof(char),
Time of Update: 2018-12-08
c++中,臨時對象一旦不需要,就會調用解構函式,釋放其佔有的資源;而具名對象則是與建立的順序相反,依次調用解構函式。c++源碼:複製代碼 代碼如下:class X {public: int i; int j; ~X() {} X() {}};int main() { X x1; X(); x1.i = 1; X x2;}對應的彙編碼:複製代碼 代碼如下:_main PROC; 11 : int main() { push ebp
Time of Update: 2018-12-08
1.首先解釋一下什麼是方法重載?方法重載是指在同一個類中方法同名,參數不同,調用時根據實參的形式,選擇與他匹配的方法執行操作的一種技術。這裡所說的參數不同是指以下幾種情況:① 參數的類型不同② 參數的個數不同③ 參數的個數相同時他們的先後順序不同注意:系統會認為是同一個方法的兩種情況,這樣的兩個方法不可以在同一個類裡,否則系統會報錯。⑴傳回型別不同,方法名和參數個數、順序、類型都相同的兩個方法⑵傳回型別相同,方法名和參數的個數、順序、類型都相同的兩個方法,但是參數的名字不同例如:複製代碼
Time of Update: 2018-12-08
下面是c++的源碼:複製代碼 代碼如下:class X {public: int i; int j; ~X() {}};void f(X x) { X x1; x.i = 1; x.j = 2;}int main() { f(X());}下面是main函數的彙編碼:複製代碼 代碼如下:_main PROC; 15 : int main() { push ebp mov ebp, esp sub esp, 8;為臨時對象預留8
Time of Update: 2018-12-08
《c++編程思想》上說一個類如果沒有拷貝函數,那麼編譯器就會自動建立一個預設的拷貝函數。下面就讓我們看一下真實的情況。首先看一個簡單的類X,這個類沒有顯示定義拷貝建構函式。c++源碼如下:複製代碼 代碼如下:class X {private: int i; int j;};int main() { X x1;//先定義對象x1 X x2 = x1;//將x1拷貝給x2}下面是其彙編代碼:複製代碼 代碼如下:_main PROC; 7 : int main()
Time of Update: 2018-12-08
c++中,如果沒有為一個類提供解構函式,那麼編譯器會為這個類提供預設的析構的函數。由於解構函式的功能和建構函式相反,因此和預設的建構函式類似,編譯器也會提供無用的預設的解構函式,和非無用的解構函式。兩者的分析情況一樣(對於預設的建構函式分析,請參看《從彙編看c++中預設建構函式的流量分析》)。並且編譯器會提供非無用的預設解構函式情形和預設建構函式類似:1 類含有虛成員函數(類繼承自虛基類或者繼承的基類含有虛成員函數,也屬於這種情況)2