1. strcat函式實現
char *strcat(char *dest, const char*src)
assert((dest!=null)&&(src!=null));
char *address = dest;
while(*dest)//此處不可以用while(*dest++),由於需要dest指向'\0'位置,如果*dest++作為迴圈條件,dest執行'\0'後面的位元組
while(*dest++=*src++);//這裡只需要將src內容拷貝到dest,不需要管最後dest和src指標指向'\0'後的一位
return address;
2. strcpy函式實現
char *strcpy(char *dest, const char *src)
assert((dest!=null)&&(src!=null));
char *address = dest;
while (*dest++=*src++);//這裡可以保證將src的'\0'拷貝給dest
return address;
3. strcmp函式實現
int strcmp(const char *dest, const char *src)
assert((dest!=null)&&(src!=null));
while (*dest&&*src&&*dest==*src)//這裡絕對不能用*dest++=*src++,因為最後dest和src指標指向不相等到後乙個位元組
return *dest-*src;
4. strlen函式實現
size_t strlen(const char *dest)
assert(dest != null);
size_t len = 0;
while(*dest++)//這裡可以用*dest++作為迴圈條件,因為不用dest指標
return len;
5. memcpy函式實現
void *memcpy(void*dest, const void *src, size_t len)
assert((dest!=null)&&(src!=null));
void*address = dest;
while (len--)
return address;
優化的memcpy
void *_memcpy(void *dest, const void *src, size_t n)
while (n-->0)
return ret;
}
什麼時候你可以創業?
什麼時候你可以創業?這個問題我不問那些涉世未深的創業者。我問那些經歷過風風雨雨的創業者。大致分來,也許可以分出以下幾種創業者 l 覺得自己比老闆強而創業的 l 有客戶資源的 l 有融資能力的 l 有發財夢想的 l 想解決乙個實際問題的 l 無他,唯創業熱情爾的。不管過去的兩年,網際網路多麼動盪,多麼...
什麼時候你可以創業?
什麼時候你可以創業?這個問題我不問那些涉世未深的創業者。我問那些經歷過風風雨雨的創業者。大致分來,也許可以分出以下幾種創業者 l覺得自己比老闆強而創業的 l有客戶資源的 l有融資能力的 l有發財夢想的 l想解決乙個實際問題的 l無他,唯創業熱情爾的。不管過去的兩年,網際網路多麼動盪,多麼醜陋,前仆後...
什麼時候用exists 什麼時候用in
in not in exists not exists 使用exists,oracle會首先檢查主查詢,然後執行子查詢直到它找到第乙個匹配項,這就節省了時間。oracle在執行in子查詢時,首先執行 子查詢,並將獲得的結果列表存放在乙個加了索引的臨時表中。在執行子查詢之前,系統先將主查詢掛起 待子查...