C C 值得研究的一些函式

2021-05-09 17:57:35 字數 930 閱讀 2460

1. memcpy函式的實現

首先對這個函式做一些說明。

#include

void *memcpy(void *to, const void *from, size_t count)

函式memcpy()從from指向的陣列向to指向的陣列複製count個字元。如果兩陣列重疊,不定義函式的行為。

在c99中,to和from由restrict修飾。

先來看看微軟的實現:

再來看看coreutils中的實現:

再來看linux中實現:

各種考慮的實現

高質量c++/c程式設計指南裡面的實現

還有bsd的實現

需要考慮的問題有:

1.寫任何程式都能反映出你的**風格.

2.考查你是否注意到,要拷貝的源,即const void* src,應該是用const的,避免有意或無意的修改.

3.考查你,不應該直接對src和dst指標進行類似++或--之類的操作,而應該另外申請對應變數用於此操作.

4.指標的型別轉化問題,原始引數應該是void *的,你具體操作的時候,應該是轉化為某種具體的型別,此處用char比較適合.

5.注意要判斷源src是否和dest重複,如果重複,直接返回或返回錯誤.

2. memset函式實現

微軟的實現

另一種實現

3. strcpy函式實現

高質量c++/c程式設計指南裡面的實現

4. 怎麼實現斷言

C C 中的一些(功能)函式

memset 對陣列中每乙個元素賦相同的值。給陣列中每乙個元素賦相同的值有兩種方法 memset 函式 和 fill 函式 memset 函式的格式為 memset 陣列名,值,sizeof 陣列名 memset 使用的是按位元組賦值,即對每個位元組賦同樣的值。如 int 型的4個位元組就會被賦成相...

一些值得記住的SQL

各種不同的資料庫查詢前n條記錄,都不一樣,現在總結了一下,列了出來 1.oracle select from table1 where rownum n 2.informix select first n from table1 3.db2 select row number over order ...

C C 的一些備忘

今天使用source insight閱讀videoserver原始碼,有一些符號ctrl 左鍵點選顯示找不到,先是rebuild工程和同步,沒有效果,然後options preferences symbol lookups中新增了project path,似乎也沒太大作用。source insigh...