Hw3 C++指令使用


  • memset
    原型:void *memset(void *buffer, int c, int count);
    功能:把buffer所指內存區域的前count個字節設置成字符c。
    傳回值:返回指向buffer的指針。

  • 單冒號
    1.表示機構內位域的定義(即該變數占幾個bit空間)
    ex:unsigned char a:4;
    2.constructor後面的冒號起分割作用,是類給成員變數賦值的方法(使用初始串列),初始化清單,更適用于成員變數的常量const型
    -->初值串列在建構函數的名稱之後,加上一個冒號,然後是變數成員與小括弧中的參數 (parameter)
    3.public:和private:後面的冒號,表示後面定義的所有成員都是公有或私有的,直到下一個"public:」或"private:」出現為止。
    "private:"為預設處理
    4.類名冒號後面的是用來定義類的繼承

  • 雙冒號
    定義class裡的“函式”
    若在class內的函數定義超過兩行,則寫在class外面更為簡潔

  • 檔案操作
    fopen()會使用緩衝區來減少對磁碟的實際I/O,以加快檔案讀寫效率,所以在程式中進行讀寫動作時,實際上會先對緩衝區作存取,而非實際的磁碟,所以不使用檔案時,一定要記得關閉檔案,關閉檔案會將緩衝區中的資料真正寫入磁碟,若忘了關閉檔案,可能會造成資料的遺失。
    開啟檔案之後,可以使用fgetc()來讀取檔案中的字元,使用fputc()來將字元寫入檔案fgetc()傳入FILE實例的位址值,每執行一次就會從檔案中讀取一個字元,直到讀到檔尾(End of File, EOF)為止,可由返回值來判斷是否讀到檔尾。

  • sscanf
    int sscanf( const char *buffer, const char *format, ... );
    scanf跟sscanf差別:

    -->scanf是從input的buffer裡來讀取特定格式輸入

    sscanf則是從**給定的buffer**來讀取特定格式輸入  
    

    format格式:{ %[*][width][{h | l | I64 | L}]type |非%符号}
    其中,
    1.如果在%後面加一個*就是要讀入可是不會存到變數裡的意思,例如說%*d,%*c。 ※ 注意!正確過濾掉的字元不會算入回傳的正確個數之中。

    1. {a|b|c}就表示a,b,c選一個,[d]則是有無都可以。
    2. width:代表讀取限制的長度。
    3. {h | l | I64 | L}:參數的bytes size,h通常是1bytes,I代表2bytes,L代表4bytes,I64則是8bytes(不過double算是個例外)。
    4. type:就看是什麼了%s, %d, %f, %lf...,或者是代表一個集合[]。例如:
      %[a-z]表示讀入的只包含a到z中的字元。%[abc]表示讀入的只包含abc三種字元%[^a]表示讀入的不包含字元a
      ※ 注意!%s其實跟%[^\n\t]是等價的
      ※%[^a]其實並不會讀掉a,只會讀到a的前一個位置的字元,所以當輸入的第一個字是a, 則會發生error的情形
  • Lamba運算式
    1.因為 Lambda 運算式具有類型,您可以將其指派至auto變數或函式物件
    2.宣告 Lambda 運算式時將該運算式與其所擷取的變數繫結在一起,而不是在呼叫該運算式時執行

int main()  
{  
   using namespace std;  

   int i = 3;  
   int j = 5;  

   // The following lambda expression captures i by value and  
   // j by reference.  
   function<int (void)> f = [i, &j] { return i + j; };  

   // Change the values of i and j.  
   i = 22;  
   j = 44;  

   // Call f and print its result.  
   cout << f() << endl;  
}
  • 位元AND運算子:& 會比較第一個運算元的每個位元,以及第二個運算元的對應位元。 如果兩個位元皆為 1,則對應的結果位元會設為 1。 否則,對應結果位元會設為 0。位元 AND 運算子的兩個運算元都必須為整數類型。
    位元遮罩:奇數的數值若以二進位來表示,其最右邊的位元必為1,而偶數最右邊的位元必為0,所以您使用1來與輸入的值作AND運算,由於 1除了最右邊的位元為1之外,其它位元都會是0,與輸入數值AND運算的結果,只會留下最右邊位元為0或為的結果,其它部份都被0 AND運算遮掉了,這就是所謂「位元遮罩」。

results matching ""

    No results matching ""