每週來點C語言零碎小知識(6)

2021-10-09 20:18:51 字數 2885 閱讀 4225

time.h是c/c++中的日期和時間標頭檔案,定義了四個變數型別、兩個巨集和各種操作日期和時間的函式。

size_t 是無符號整數型別,它是 sizeof 關鍵字的結果。

clock_t 適合儲存處理器時間的型別。

time_t is 適合儲存日曆時間型別。

struct tm用來儲存時間和日期的結構。

null:乙個空指標常量的值。

clocks_per_sec:每秒的處理器時鐘個數。

1、char *asctime (const struct tm *timeptr)

返回乙個指向字串的指標,它代表了結構 timeptr 的日期和時間。

函式功能: 得到機器時間(日期時間轉換為ascii碼)

函式返回: 返回的時間字串格式為:星期,月,日,小時:分:秒,年

2、clock_t clock(void)

返回程式執行起(一般為程式的開頭),處理器時鐘所使用的時間。

也就是得到從程式啟動到此次函式呼叫時累計的毫秒數。

3、char *ctime (const time_t *timer)

返回乙個表示當地時間的字串,當地時間是基於引數 timer。

函式功能: 得到日曆時間

函式返回: 返回字串格式:星期,月,日,小時:分:秒,年

4、double difftime (time_t time1, time_t time2)

返回 time1 和 time2 之間相差的秒數 (time1-time2)。

函式功能: 得到兩次機器時間差,單位為秒

函式返回: 時間差,單位為秒

5、struct tm *gmtime (const time_t *timer)

timer 的值被分解為 tm 結構,並用協調世界時(utc)也被稱為格林尼治標準時間(gmt)表示。

函式功能: 得到以結構tm表示的時間資訊

函式返回: 以結構tm表示的時間資訊指標

6、struct tm *localtime (const time_t *timer)

timer 的值被分解為 tm 結構,並用本地時區表示。

7、time_t mktime (struct tm *timeptr)

把 timeptr 所指向的結構轉換為乙個依據本地時區的 time_t 值。

8、size_t strftime (char *str, size_t maxsize, const char *format, const struct tm *timeptr)

根據 format 中定義的格式化規則,格式化結構 timeptr 表示的時間,並把它儲存在 str 中。

9、time_t time (time_t *timer)

計算當前日曆時間,並把它編碼成 time_t 格式。

也就是得到從標準計時點(一般是2023年1月1日午夜)到當前時間的秒數。

函式功能: 得到系統當前的日曆時間

函式返回: 系統當前日曆時間,如果不能獲得當前日曆時間,則返回-1

c與c++的static有兩種用法:面向過程程式設計中的static和物件導向程式設計中的static。前者應用於普通變數和函式,不涉及類;後者主要說明static在類中的作用。

在全域性變數前,加上關鍵字static,該變數就被定義成為乙個靜態全域性變數。

靜態全域性變數有以下特點:

1、該變數在全域性資料區分配記憶體;

2、未經初始化的靜態全域性變數會被程式自動初始化為0(在函式體內宣告的自動變數的值是隨機的,除非它被顯式初始化,而在函式體外被宣告的自動變數也會被初始化為0);

3、靜態全域性變數在宣告它的整個檔案都是可見的,而在檔案之外是不可見的;

定義靜態全域性變數有以下好處:

1、靜態全域性變數不能被其它檔案所用;

2、其它檔案中可以定義相同名字的變數,不會發生衝突;

注意:全域性變數和全域性靜態變數的區別

1、全域性變數是不顯式用static修飾的全域性變數,全域性變數預設是有外部鏈結性的,作用域是整個工程,在乙個檔案內定義的全域性變數,在另乙個檔案中,通過extern 全域性變數名的宣告,就可以使用全域性變數。

2、全域性靜態變數是顯式用static修飾的全域性變數,作用域是宣告此變數所在的檔案,其他的檔案即使用extern宣告也不能使用。

在區域性變數前,加上關鍵字static,該變數就被定義成為乙個靜態區域性變數。

靜態區域性變數有以下特點:

1、該變數在全域性資料區分配記憶體;

2、靜態區域性變數在程式執行到該物件的宣告處時被首次初始化,即以後的函式呼叫不再進行初始化;

3、靜態區域性變數一般在宣告處初始化,如果沒有顯式初始化,會被程式自動初始化為0;

4、它始終駐留在全域性資料區,直到程式執行結束。但其作用域為區域性作用域,當定義它的函式或語句塊結束時,其作用域隨之結束;

參考:static

time.h

time.h

所在標頭檔案:stdlib.h

exit(0):關閉所有檔案,終止正在執行的程序。

_exit(0):不能輸出結果,未清除i/o快取,不列印。

exit(x) :(x不為0)都表示異常退出

exit(1):非正常執行導致退出程式;這個1是返回給作業系統的。。

在main中return v;的效果與exit(v);相同。

它是乙個file型別的指標

可以通過下面的方式宣告乙個檔案指標

file *fp;
如果希望對乙個檔案進行操作,需要先使用

fp =

fopen

(檔案路徑, 訪問模式)

;

將檔案指標和檔案關聯起來,其中第乙個引數是乙個字串,對應了我們希望訪問的檔案

C 零碎小知識

1 控制符 字首可以使引號裡的內容原樣輸出,而不理會裡面的轉義字元。2 轉義字元 為了靈活控制文字格式,c 中定義了大量轉義字元,這些字元都以反斜槓 開頭。3 運算子 可以將兩個字串連線起來。4 列舉型別 enumeration type 它能把字串對映到數字上,既能增強可讀性,又可以參與運算。5 ...

零碎小知識

1.將字串轉換成對應的列舉 列舉 enum.parse typeof 列舉 阿薩德飛 true 將字串轉換成對應的列舉,忽略大小寫。列舉 enum.parse typeof 列舉 阿薩德飛 不忽略大小寫 2.訪問控制符 3.在try catch finally中,當return遇到finally 1...

iOS零碎小知識

判斷螢幕解析度 bool retina cgsizeequaltosize cgsizemake 640,960 uiscreen mainscreen currentmode size 返回true說明當前解析度是cgsizemake 640,960 false則不是 遇到類似這樣的錯誤faile...