胡亂學習C語言的一點筆記(不定時更新)

2021-09-29 12:48:46 字數 3125 閱讀 4400

c語言中自帶的函式rand()srand(),包含在標頭檔案當中。

返回乙個範圍在0-rand_max之間的隨機數。

注意:該函式生成的隨機數是一次性的,第二次執行時結果仍然一樣。

這是因為rand()函式是根據「種子」來產生隨機數的,在呼叫時,「種子」預設為1,所以產生的數相同。

srand()函式用來設定rand()產生隨機數所需要的「種子」,通過srand()函式設定「種子」,可以使rand()產生的「隨機數」真正達到隨機。

一般配合time()函式(在標頭檔案中)來動態生成「種子」。time(0)返回當前系統時間,time(null)返回當前日曆時間,都是從2023年1月1日0時0分0秒到此時的秒數。目前測試來看(更改了計算機顯示時間),兩者返回的值相等。

得到一般生成隨機數的用法:

srand(time(null));            

printf("%d\n",rand());

一般計算時間可能會使用clock()函式(包含在中),它得到的是處理器時鐘所使用的時間,因此在並行程式當中,它將得到所有程序(執行緒)計算所花費的時間之和,與我們想要得到的相差甚遠。

返回當前精確時間(從2023年1月1日0時0分0秒到此時的時間),包含在中:

#include

int gettimeofday(struct timeval *tv, struct timezone *tz);

其引數tv是儲存獲取時間結果的結構體,引數tz用於儲存時區結果:

struct timezone

timezone引數若不使用則傳入null即可,一般用null

而結構體timeval的定義為:

struct timeval

一般過程為:

struct timeval start_t, end_t;       //宣告結構體變數

gettimeofday(&start_t, null); //記錄開始的時間

gettimeofday(&end_t, null); //記錄結束的時間

double total_t_sec, total_t_usec, total_t; //變數宣告

total_t_sec = (double)(end_t.tv_sec - start_t.tv_sec); //計算秒數

total_t_usec = (double)(end_t.tv_usec - start_t.tv_usec); //計算微秒數

total_t = total_t_sec + total_t_usec / 1000000.0; //計算總時間

#include int main(int argc, char *ar**)
agrc為引數個數,ar**是字串陣列,下標從0開始,第乙個ar**[0]存放的是可執行程式的檔案名字,然後一次存放傳入的引數,例如上面的**(hello.c):

1.首先通過gcc編譯:gcc -o hello.out hello.c得到可執行檔案hello.out。

2.在執行時通過傳入引數:./hello.out hello,world其中空格後面接引數,多個引數通過空格分開。

最後得到結果

首先,假設有兩個原始檔和乙個標頭檔案,分別命名為main.c fun.c fun.h,表示主函式main()所在檔案,函式所在檔案,函式宣告所在檔案。

#ifndef #endif的作用是防止某乙個原始檔中兩次包含同乙個標頭檔案

#define 定義該標頭檔案的標識

#ifndef fun_h

#define fun_h

int fun(int a);

#endif

該包含函式的原始檔中必須加入#include"fun.h"

#include#include"fun.h"

int fun(int a)

在標頭檔案中加入#include"fun.h"

用gcc編譯時,需要鏈結到呼叫函式對應的.c檔案,如:gcc main.c fun.c -o main.out

#include#include"fun.h"

int main()

該函式包含在標頭檔案 stdlib.h 中,作用為把引數str所指向的字串根據給定的base轉換為乙個長整數。

long strtol(

const char *str, //輸入字串,需要轉換為長整數的字串

char **endptr, //str中數值後的下乙個字元,一般為(null)

int basr //基數,介於2-36之間,或者為0,表示輸出的數的進製,如:base=10就為十進位制

)

學習nodejs的一點筆記

1 global可以宣告全域性變數 跨模組 例如 global a 100 console.log global.a 輸出100 2 module物件 當前模組的filename 子模組等資訊 3 module.expors.obj 將obj物件宣告為全域性物件 4 filename 當前模組的路徑...

php一點筆記

1.replace函式作用 替換字串中匹配到的預先定義的正規表示式的內容 3.建立與資料庫的連線 db mysql connect localhost root or die could not connect mysql error mysql select db register or die ...

Redis的一點筆記

優勢之三原子 什麼是原子性,什麼是原子性操作?舉個例子 a想要從自己的帳戶中轉1000塊錢到b的帳戶裡。那個從a開始轉帳,到轉帳結束的這乙個過程,稱之為乙個事務。在這個事務裡,要做如下操作 如果在a的帳戶已經減去了1000塊錢的時候,忽然發生了意外,比如停電什麼的,導致轉帳事務意外終止了,而此時b的...