C語言 strcpy和memcpy區(qū)別詳細(xì)介紹
PS:初學(xué)算法,開始刷leetcode,Rotate array的預(yù)備知識(寫的代碼Time Limit Exceed難過)于是百度高效算法,本篇作為預(yù)備知識。
1、strcpy和strncpy函數(shù)
這個(gè)不陌生,大一學(xué)C語言講過,其一般形式為strcpy(字符數(shù)組1,字符串2)作用是將字符串2復(fù)制到字符數(shù)組1中去。
EX:
char str1[10]='',str2[]={"China"}; strcpy(str1,str2); strncpy(str1,str2,2);作用是將str2中最前面2個(gè)字符復(fù)制到str1中,取代str1中原有的最前面2個(gè)字符。
2、memcpy函數(shù)
c和c++使用的內(nèi)存拷貝函數(shù),memcpy函數(shù)的功能是從源src所指的內(nèi)存地址的起始位置開始拷貝n個(gè)字節(jié)到目標(biāo)dest所指的內(nèi)存地址的起始位置中。
用法:void *memcpy(void *dest, const void *src, size_t n);
EX:
char *s1 = "csdn"; char *s2 = new char[10]; char *s3 = memcpy(s2,s1,5);
3、strcpy和memcpy的區(qū)別。
1、復(fù)制的內(nèi)容不同。strcpy只能復(fù)制字符串,而memcpy可以復(fù)制任意內(nèi)容,例如字符數(shù)組、整型、結(jié)構(gòu)體、類等。
2、復(fù)制的方法不同。strcpy不需要指定長度,它遇到被復(fù)制字符的串結(jié)束符"/0"才結(jié)束,所以容易溢出。memcpy則是根據(jù)其第3個(gè)參數(shù)決定復(fù)制的長度。
3、用途不同。通常在復(fù)制字符串時(shí)用strcpy,而需要復(fù)制其他類型數(shù)據(jù)時(shí)則一般用memcpy
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選