一、memset
前提:定義變數時一定要進行初始化,尤其是陣列和結構體這種占用記憶體大的資料結構。在使用陣列的時候經常因為沒有初始化而產生「燙燙燙燙燙燙」這樣的野值,俗稱「亂碼」。memset() 函式可以說是初始化記憶體的「萬能函式」,通常為新申請的記憶體進行初始化工作。它是直接操作記憶體空間,mem即「記憶體」(memory)的意思。
memset() 的作用是在一段記憶體塊中填充某個給定的值。因為它只能填充乙個值,所以該函式的初始化為原始初始化,無法將變數初始化為程式中需要的資料。用memset初始化完後,後面程式中再向該記憶體空間中存放需要的資料。
標頭檔案# include
函式功能: 變數初始化函式原型:
void *memset(void *buffer,int a,int
n)輸入函式:
1、buffer 是指標或者陣列,void是要初始化的首記憶體的首位址,void* 型的指標變數,所以它可以為任何型別的資料進行初始化。
2、a是要初始化的變為的資料, int型別
3、n是buffer的長度,即大小
函式返回: 無
優點: memset 是對較大的陣列或結構體進行清零初始化的最快方法,因為它是直接對記憶體進行操作的。
用法:
1、memset 函式的第三個引數 n 的值一般用 sizeof() 獲取。
2、memset是以位元組為單位,初始化記憶體塊。
char data[10];memset(data,
1, sizeof(data)); //
right
memset(data, 0, sizeof(data)); //
right
int data[10];memset(data,
0, sizeof(data)); //
right
memset(data, -1, sizeof(data)); //
right
memset(data, 1, sizeof(data)); //
wrong, data[x] would be 0x0101 instead of 1
二、calloc
calloc在記憶體的 動態儲存區中分配n個長度為size的連續空間
malloc和calloc之間的不同點是,malloc 不會設定記憶體為零,而 calloc 會設定分配的記憶體為零。
函式功能: 分配所需的記憶體空間函式原型:
void *calloc(size_t n, size_t size)
輸入函式: nitems --要被分配的元素個數。
size --元素的大小。
函式返回: 該函式返回乙個指標,指向已分配的記憶體。如果請求失敗,則返回 null。
用法:
#include #includestruct
test;
intmain()
return(0
);}
三、break
break語句通常用在迴圈語句和開關語句中。當break用於開關語句switch中時,可使程式跳出switch而執行switch以後的語句;如果沒有break語句,則會從滿足條件的地方(即與switch(表示式)括號中表示式匹配的case)開始執行,直到switch結構結束。當break語句用於do-while、for、while迴圈語句中時,可使程式終止迴圈。而執行迴圈後面的語句,通常break語句總是與if語句聯在一起。即滿足條件時便跳出迴圈。
break 在一些計算機程式語言中是保留字,其作用大多情況下是終止所在層的迴圈。
1、break語句對if-else的條件語句不起作用。
2、在多層迴圈中,乙個break語句只向外跳一層。
1、continue:跳出當前迴圈,即不執行continue後的語句,進入下次迴圈。
2、break:跳出for迴圈,不再進行下次迴圈,但可以執行for之外的語句。
3、return:跳出for迴圈,且不執行for之外的語句,直接跳出當前函式,返回return後的值。
四、pthread
1、pthread_join()即是子執行緒合入主執行緒,主線程阻塞等待子執行緒結束,然後**子執行緒資源。
函式功能:pthread_join()函式,以阻塞的方式等待thread指定的執行緒結束。當函式返回時,被等待執行緒的資源被收回。如果執行緒已經結束,那麼該函式會立即返回。並且thread指定的執行緒必須是joinable的。函式原型:
int pthread_join(pthread_t thread, void **retval);
輸入引數 :thread: 執行緒識別符號,即執行緒id,標識唯一執行緒。
retval: 使用者定義的指標,用來儲存被等待執行緒的返回值。
函式返回 : 0代表成功。 失敗,返回的則是錯誤號。
2、pthread_detach()即主線程與子執行緒分離,子執行緒結束後,資源自動**。
函式原型:
intpthread_detach(pthread_t tid);
輸入引數:tid:執行緒識別符號
函式返回:pthread_detach() 在呼叫成功完成之後返回零。其他任何返回值都表示出現了錯誤。如果檢測到以下任一情況,pthread_detach()將失敗並返回相應的值。
einval:tid是分離執行緒
esrch:tid不是當前程序中有效的為分離執行緒
丟棋子問題2020 12 3
題目描述 一座大樓有層,地面算作第0層,最高的一層為第 層。已知棋子從第0層掉落肯定不會摔碎,從第層掉落可能會摔碎,也可能不會摔碎。給定整數作為樓層數,再給定整數作為棋子數,返回如果想找到棋子不會摔碎的最高層數,即使在最差的情況下扔的最小次數。一次只能扔乙個棋子。示例1輸入 10,1 返回值10 說...
CCF 202012 3 帶配額的檔案系統 練習
大模擬,沒涉及什麼演算法主要是資料結構的設計 細節的考慮,挺鍛鍊的,記錄一下,加了注釋。include include include include include include using namespace std typedef long long ll struct file file ...
學習筆記 雜湊學習筆記
hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...