學習C的一些筆記(一)

2021-08-01 14:42:47 字數 1894 閱讀 6305

總結下很早以前的筆記,溫故而知新。

printf("%-2d*%2d=%3d ", index_i + 1, index_j + 1, (index_i + 1) * (index_j + 1) );

在輸入一長串數,但需要單個讀入的時候,就需要指定寬度 即%1d(如身份證系統scanf(」%1d「, &a[i]))其中「-」代表左對齊,2,3代表顯示幾個字元,不足,用空格代替。

當需要使用getch()時,標頭檔案為#include

c/c++中「<」應該用「!=」表示。

c/c++中中「*2」應該用"<<1"即左移一位來表示

register 請求編譯器優化它定義的變數,並且通常這種優化比人工優化的好.無需多次訪問記憶體,只需要在暫存器中呼叫。

在有指標的情況下,一定要先驗證指標是否為空

scanf,printf與sscanf,sprintf和fscanf, fprintf的區別:sscanf是從緩衝區裡讀取,scanf是從標準輸入讀取,fscanf從檔案流中讀取資訊。printf是列印到標準輸出,sprintf是輸出到緩衝區裡,返回值是輸入的字元數量,fprintf將資訊寫入到檔案流中

strlen函式表示測定字串長度,但是會算上\0。所以對於字串長度要-1

union 與struct的區別:union ( 共用體):構造資料型別,也叫聯合體 用途:使幾個不同型別的變數共佔一段記憶體(相互覆蓋)。struct ( 結構體 ):是一種構造型別 用途: 把不同的資料組合成乙個整體——自定義資料型別

隨機生成數字 rand()%100(表示隨機產生0~100之間的數)但產生隨機數為一次性,因為與srand()函式有關。srand()用來設定rand()產生隨機數時的隨機數種子。在呼叫rand()函式之前,必須先利用srand()設好隨機數種子(seed),如未設定則回自動設定成1。通常可以利用getpid()(將系統返回的程序id作為隨機數種子(程序id每次都不一樣))或time(0)(以系統時間作為種子)的返回值來當作seed。(srand((int)time(0));或者srand((int)getpid()))(mac algorithm test)注:getpid在windows下標頭檔案是#include,在linux/unix下是#include如果要生成乙個範圍內的隨機數,例如,60—100,則是:rand()%41+60

int main(int argc, char* argv)

main為函式,int為函式返回值型別,argc跟*argv為引數,這兩個引數為系統所傳,即系統呼叫時會給程式傳引數,(傳入argc和argv)

13.#代表預處理。

一般預處理命令有三個,巨集定義,標頭檔案包涵,條件編譯(在編譯時判斷)

標頭檔案用<>,程式在安裝目錄下尋找,用""時先在源程式目錄下找

函式申明是給聯結器使用,int main(int argc, char* argv)就是乙個函式申明,是告訴編譯器該函式在其他地方已經定義過了,會交給聯結器處理。申明不佔任何空間

.當為輸入時,double為%lf,當為輸出時%f

scanf返回值為成功賦值的變數數量,發生錯誤時返回eof

a[j] = !a[j]代表將其值的相反值賦予當前元素。非零值即真例如,如果a[j] = 0,那賦值後結果為1,如果不為0,那賦值後的結果為0

如果在c中要輸出\那麼,要\\,如printf("\\")

c中可以通過標頭檔案ctype.h 中的isalpha,isdigit,isprint來判定字元屬性

continue跳出迴圈體中剩餘部分,從下次迴圈開始判斷,break是直接跳出迴圈

為什麼不能連續等於大於小於,如「『a』 <= ch <= 『z』」 

因為機器把』a』 <=看成乙個表示式,若成立則最後值為1,若不成立為0,所以此表示式永遠為真。注:編譯器每次只算乙個操作符。

assert函式,若錯誤會報錯,abort錯誤直接退出

學習C 的一些筆記(四)

91.raii 獲取資源時才初始化,一種資源管理方式 本身為棧物件 92.智慧型指標,一共有4種auto ptr 只能生成棧物件 unique ptr,shared ptr 強引用指標 weak ptr 弱引用指標 標頭檔案為 include,使用只能指標主要是為了防止記憶體洩露,傳統的記憶體分配方...

一些C 筆記

this指標 類的繼承 基類 父類 子類 如果基類和子類都有構造器,則基類的構造器會先被呼叫。class animal class pig public animal animal animal std string thename pig pig std string thename animal...

C 的一些筆記

發現一些小的知識點長期不用都得忘,決定再次遇到了一定要記錄一下。任何不會修改資料成員的函式都應該宣告為const型別。如果在編寫const成員函式時,不慎修改了資料成員,或者呼叫了其它非const成員函式,編譯器將指出錯誤,這無疑會提高程式的健壯性。在建構函式前加explicit關鍵字禁止物件作隱式...