while ptr 什麼時候可以作為迴圈體

2021-07-10 09:38:42 字數 1287 閱讀 1255

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子查詢時,首先執行 子查詢,並將獲得的結果列表存放在乙個加了索引的臨時表中。在執行子查詢之前,系統先將主查詢掛起 待子查...