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...