原创 單例模式實例化的時機

  static在單例中的應用 所謂單例就是一個類只能被實例化一次,主要有兩種實現方法: 在類使用之前,就將類實例化,也叫餓漢模式。利用靜態對象 使用到類時,才進行實例化,也叫懶漢模式。利用靜態對象指針 reference: https:

原创 打印二維數組

  以下程序運行後的輸出結果是 void main(void) {     char ch[]="ABCD";     char x[3][3];     int i;     memset(x,0,sizeof(x));     for

原创 “常量指針”和“指針常量”

  對以下C語言類型聲明語句 double * const cptr;的解釋正確的是() A、cptr指向的地址以及地址內的內容均可以改變 B、cptr指向的地址不能改變 C、cptr指向的地址內的內容不能改變 D、cptr指向的地址以及

原创 大端 和 小端序

    定義如下的聯合體類型和變量 union { unsigned char c[2]; unsigned int i; }m; m.i= ~0xFF; 則在little-endian字節序的機器上m.c[0], m.c[1]分別爲  

原创 malloc和calloc

    malloc和calloc都可以用來動態分配內存,但是兩者稍有差別。calloc在分配完內存後,還會對申請的內存進行初始化爲零,很多場景我們會考慮性能,不會對申請的內存做全量清零,因此不能直接用calloc替換malloc。

原创 C語言中 int*p[4] 和 int(*p)[4]的區別

    int *p[4]; //定義一個指針數組,該數組中每個元素是一個指針,每個指針指向哪裏就需要程序中後續再定義了。 int (*p)[4]; //定義一個數組指針,該指針指向含4個元素的一維數組(數組中每個元素是int型)。 區分

原创 extern "C" 淺析

解決的問題就是:在C++中調用C語言函數 C++調用C語言函數的3種方法: 1. C語言的頭文件提供時,就做了C++使用的準備,如圖一,ifdef __cplusplus; 2.直接將C函數extern c聲明在cpp文件中; 3.在c

原创 C++函數重載

如下:調用func2 1 和 func2 2均可以,所以產生了二義性 如下代碼運行,會使用 常引用入參的那個函數

原创 C++函數默認參數與佔位參數

       

原创 C++內聯函數:用來替代C中的宏函數

C++  類和對象 關係??? 對象是對類的實例 類是對對象的抽象      

原创 C++ 儘量以 const替換 #define

  C++ 儘量以 const替換 #define 在舊版本C中,如果想建立一個常量,必須使用預處理器 #define MAX 1024 我們定義的宏MAX從未被潤譯器看到過,因爲在預處理階段,所有的MAX已經被替換爲了1024,於是MA

原创 C++對C的增強的幾點

目錄 1. C中可以定義兩個全局變量,C++中會報重定義 int a; int a = 10; 2. 函數的參數個數檢測,C 語言可以傳多個,但是C++必須和定義嚴格相等 (否則:c++函數參數數量不確定的兩種實現方式, https:/

原创 C++ 引用基本用法

引用基本用法(所謂的引用,就是取別名) 引用是c++對c的重要擴充。在c/c++中指針的作用基本都是一樣的,但是C++增加了另外種給函數傳遞地址的途徑,這就是按引用傳遞( pass-by-reference),它也存在於其他一些編程語言

原创 初始化(賦值)全F的幾種方法 (補碼)

  對於無符號數,賦值爲 -1 等價於,賦值爲全f typedef unsigned char BYTE; typedef unsigned int DWORD; int main() { DWORD a = 0xffffffff

原创 VS error C4996錯誤

  關閉 C4996 警告 在使用VC 2005 的開發者會遇到這樣的問題,在使用std命名空間庫函數的時候,往往會出現類似於下面的警告: warning C4996: strcpy was declared deprecated 出