2020 12 3學習筆記

2022-06-22 12:39:18 字數 2781 閱讀 7325

一、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的連續空間

malloccalloc之間的不同點是,malloc 不會設定記憶體為零,而 calloc 會設定分配的記憶體為零。

函式功能:  分配所需的記憶體空間

函式原型: 

void *calloc(size_t n, size_t size)

輸入函式: nitems --要被分配的元素個數。

size --元素的大小。

函式返回: 該函式返回乙個指標,指向已分配的記憶體。如果請求失敗,則返回 null。

用法:

#include #include 

struct

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值。它的主要思路是選取恰當的進製,可以...