原创 求結構體成員相對地址

#define offset(S, member) (long(&(((S*)0)->member)))

原创 bool變量與零值的比較

bool flag= FALSE; 應選擇如下編寫方式: if(flag)  if(!flag) 不建議按以下方式寫: if(flag==1)  if (flag==0)//容易理解成flag是int類型數據 if(flag==TRUE)

原创 char和int的轉換

char->int:      char c='A';      int d=(int)c; int->char:      int c= 65;      char d=(char)c;

原创 main之前會執行什麼代碼

全局對象的構造函數會在main函數之前執行

原创 JAVA中String常量存儲在哪

String常量存儲在常量池內,常量池在內存中是以表的形式存在。有一張固定長度的CONSTANT_String_info用來存儲String常量。 常量池在編譯的時候確定下來,因此以下: String s1="hello"; String

原创 int i=-20; unsigned int j = 10; i+j;的問題

int i=-20;unsigned int j = 10;unsigned int k=i+j;cout<<(int)k;//輸出爲-10cout<<k;//輸出爲4294967286從這可以理解:在i

原创 引用

引用是C++提出來使用變量的另一種方式,有以下特點:1.聲明時必須要進行初始化,int &a = b;2. 不能建立引用的數組,可以建立數組的引用3. 編譯器將引用實現爲const指針,實際上引用是佔用內存

原创 絕對地址轉化爲函數指針

typedef void (*func)(void) #define address 0X40000 ((func)address)();

原创 C語言函數入棧順序

1. 函數中的第一條可執行語句的地址 2. 函數參數:大多數是參數是從右向左順序入棧(大部分編譯器,原因在於C語言支持可變參數個數,使最左邊的參數保持在棧頂) 3. 局部變量 C語言棧底爲高地址、棧頂爲低地址。 靜態變量不入棧

原创 幾個基礎的排序算法的要點

1. 插入排序       從第i(i>=1, i=0...n-1)個數開始,每個數與前面的數進行比較,找到它的區間位置(a[j]<a[i]<a[k]),將a[k]..a[i-1]之間的數全部後移一位。完成前i個數的排序。故稱:插入! 2

原创 第一個java項目,完!

應該說這不是第一個,第一個是在學java時,私底下偷偷編了個局域網五子棋大戰遊戲! 這個項目說起來比較簡單:一個可以編輯不同類別數據的界面、將數據按照Motorola格式組織並生成文件 好吧。剛開始,所有的項目經理都說這很簡單的,快去做

原创 數值轉化爲地址

(const char *)0x0

原创 linux內核網絡模塊筆記

1. 應用層要傳送數據時,在網絡層需要構造skb結構,填充相關報文數據,調用dev_queue_xmit函數進行發送 2. dev_queue_xmit函數後,會進行入隊、出隊等一系列隊列操作,而後調用hard_start_xmit指針函

原创 中斷服務程序的注意點

1. 不能有返回值 2. 不能帶入參 3. 不能有重入性和影響性能的函數,類似printf等,遇到處理大量數據的任務,應另起一個線程去處理。 4. 內容短小精悍! 標準C語言是不包含中斷,因此在教科書裏是看不到這部分內容。 編譯開發商在標

原创 C與C++互相包含API注意點

extern "C"爲鏈接指示符,是C++爲了實現C及其他語言的混合編程!簡單而言,是C++爲了向下兼容而實施的方法。 extern "C"是C++的新特性,只能用於C++,而C語言是不支持extern “C++”聲明,若加入,將引起