三天,學長給的三個小函式現在只寫出了乙個。
實現三個函式
int memoryset(void * dst, const void * src, size_t n);
將dst 所指向的記憶體中的每個位元組的內容全部設定為src 指定的值,先以八個位元組為單位,
不足再以四位元組位單位,不足再以兩位元組為單位,餘下的以一位元組為單位。
int memorycpy(void * dst, const void * src, size_t n);
將src 所指向的記憶體複製到dst 指定的區域,先以八個位元組為單位,不足再以四位元組位單位,
不足再以兩位元組為單位,餘下的以一位元組為單位。
int memorymov(void * dst, const void * src, size_t n);
將src 所指向的記憶體複製到dst 指定的區域(當dst 小於src 且有重疊時也能正常複製),先
以八個位元組為單位,不足再以四位元組位單位,不足再以兩位元組為單位,餘下的以一位元組為單位。
這三個都是庫函式好像,只寫出了第二個,有些感慨,還有些疑慮。
我的這些真有點太初級了:
#include
#include
int memorycpy(void *dst,const void *src,size_t n)
/*4、2、1位元組段至多只有乙個*/
flag_d[1]=flag_d[2];
flag_s[1]=flag_s[2];
if(n>=sizeof(float))
}flag_d[0]=flag_d[1];
flag_s[0]=flag_s[1];
if(n>=sizeof(short))
}if(n)
}return 0;
}一段測試:
int main()
;*/char*dst=(char*)malloc(11);
memorycpy(dst,src,sizeof(src));
printf("%s/n",dst);
return 0;
}1.不明白為什麼這裡不論dst傳入的是多長的指標,都能正確複製?
2.第乙個問題中,要把dst指向的位址「全部設定為src指向的值「,如果dst比src長的話怎麼判斷dst結束沒有?
3.第三個問題中怎麼知道dst比src是大還是小,如果dst比src小,又該怎麼實現呢?
void指標 void 的用法
指標有兩個屬性 指向變數 物件的位址和長度 但是指標只儲存位址,長度則取決於指標的型別 編譯器根據指標的型別從指標指向的位址向後定址 指標型別不同則定址範圍也不同,比如 int 從指定位址向後尋找4位元組作為變數的儲存單元 double 從指定位址向後尋找8位元組作為變數的儲存單元 1.void指標...
void指標 void 的用法
指標有兩個屬性 指向變數 物件的位址和長度 但是指標只儲存位址,長度則取決於指標的型別 編譯器根據指標的型別從指標指向的位址向後定址 指標型別不同則定址範圍也不同,比如 int 從指定位址向後尋找4位元組作為變數的儲存單元 double 從指定位址向後尋找8位元組作為變數的儲存單元 1.void指標...
void指標 void 的用法
指標有兩個屬性 指向變數 物件的位址和長度 但是指標只儲存位址,長度則取決於指標的型別 編譯器根據指標的型別從指標指向的位址向後定址 指標型別不同則定址範圍也不同,比如 int 從指定位址向後尋找4位元組作為變數的儲存單元 double 從指定位址向後尋找8位元組作為變數的儲存單元 1.void指標...