strcpy函式作用是把一個地址后面的字串拷貝到另一個地址后面,因為字串后面要加‘\0’,所以‘\0’也要拷貝
//strcpy模擬實作①代碼未優化時
#include<stdio.h>
#include<assert.h>
void my_strcpy(char* dest,const char* src)
{
assert(dest && src);
while(*src)
{
*dest = *src;
dest++;
src++;
}
*dest = '\0';
}
int main()
{
char arr1[] = "abcdef*";
char arr2[30] = "cdef";
my_strcpy(arr2,arr1);
printf("%s",arr2);
return 0;
}
(解釋)
1.斷言assert確保當傳入指標是空指標是系統停止
2.當src指標指向的資料是‘\0’時停止拷貝,即while回圈條件
3.先賦值后++,指標向后移動一位
4.因為先判斷才賦值,所以‘\0’時回圈不再進行,也就沒有賦值,因而最后補上一個‘\0’
//②優化my_strcpy 因為是后置++,所以先賦值,然后地址++,最后判斷
#include<stdio.h>
void my_strcpy(char* dest,char* src)
{
while(*dest++ = *src++)
{
;
}
}
int main()
{
char arr1[] = "abcdef*";
char arr2[30] = "cdef";
my_strcpy(arr2,arr1);
printf("%s",arr2);
return 0;
}
(解釋)
1.后置++,即先使用后加一,即在while條件里是先解參考賦值以后再加一,因為++結合性更高所以是地址加一
2.邏輯順序:先賦值后判斷,最后地址加一
3.因為簡單粗暴,先賦值再判斷,管他是不是‘\0’,所以‘\0’也被賦值,最后不用補加‘\0’,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/223746.html
標籤:python
上一篇:c++之選擇排序
