char *strcpy(char *dest, const char *src) {
assert(dest != NULL && src != NULL); // 1. 參數合法性檢查
char *ret = dest; // 2. 保存原始目標地址用於返回
while ((*dest++ = *src++) != '\0') // 3. 拷貝並判斷結束
;
return ret; // 支持鏈式調用
}
dest 在循環中會改變,必須保存初始值返回,否則調用者無法獲取目標字符串起始地址。char* 允許 strlen(strcpy(a, b)) 這樣的鏈式調用,符合標準庫慣例。const 修飾 src,導致源字符串可能被修改。*dest++ = *src++ 忘記比較 '\0'。dest(已指向末尾)。