新聞中心
C語(yǔ)言strcpy()函數(shù)和指針的題目
strcpy(char a*, char b*)的作用,簡(jiǎn)單講就是給你兩個(gè)內(nèi)存起始地址(你可以將它們想象成給了你兩排箱子,每個(gè)箱子都有編號(hào),比如第一排的編號(hào)是0,1,2,3,4,第二排的編號(hào)是7,8,9,則a,b分別就是這兩排箱子的起始編號(hào)),將以b開(kāi)始的內(nèi)存地址中的數(shù)據(jù)復(fù)制到以a開(kāi)始的內(nèi)存地址中(就是將箱子7中的東西復(fù)制到箱子0,將箱子8中的東西復(fù)制到箱子1,...)。因?yàn)閍要容納b的所有數(shù)據(jù),所以分配給a的內(nèi)存數(shù)量必須大于等于分配給b的內(nèi)存數(shù)量(大于意味著a的內(nèi)存沒(méi)裝滿,有富余空間),即第一排箱子的數(shù)量要大于第二排的。
成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒(méi)有做好網(wǎng)站,給成都創(chuàng)新互聯(lián)公司一個(gè)展示的機(jī)會(huì)來(lái)證明自己,這并不會(huì)花費(fèi)您太多時(shí)間,或許會(huì)給您帶來(lái)新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。
具體到你的問(wèn)題,箱子的數(shù)量就是分配給數(shù)組或字符指針的內(nèi)存字節(jié)數(shù)。str1和str4都分配了9個(gè)字節(jié),因?yàn)榘炎址峙浣ochar數(shù)組(數(shù)組的大小沒(méi)由你顯式指定時(shí)才這樣)或char指針時(shí),會(huì)比字符串的實(shí)際長(zhǎng)度多分配1個(gè)字節(jié),以容納'\0'字符,str2是8個(gè)字節(jié)(8是顯式指定的),而str3一個(gè)字節(jié)也沒(méi)分配,所以不能把"HELL03"復(fù)制給str3,因?yàn)橐b下"HELL03",需要至少7個(gè)字節(jié)('\0'也要一個(gè)字節(jié))。
C語(yǔ)言求助字符指針復(fù)制函數(shù)~
#includestdio.h
int main()
{
void copy(char *from,char *to);
char a[81]; //源串?dāng)?shù)組
char b[81]; //目標(biāo)串?dāng)?shù)組,此數(shù)組要保證不小于源串,不然,數(shù)據(jù)會(huì)產(chǎn)生越界問(wèn)題
printf("input a string:" );
gets(a); //輸入一個(gè)字符串?dāng)?shù)據(jù),如:hello,world
copy(a,b);
printf("%s\n",b);
return 0;
}
void copy(char *from,char *to)
{
for(;*from!='\0';from++,to++)
{
*to=*from;
}
*to='\0';
}
C語(yǔ)言,怎么把一個(gè)指針的內(nèi)容復(fù)制到另一個(gè)指針?
直接對(duì)指針進(jìn)行賦值即可實(shí)現(xiàn)把一個(gè)指針的內(nèi)容復(fù)制到另一個(gè)指針。
下面舉例來(lái)說(shuō)明具體的操作過(guò)程:
int?*p1=(int?*)malloc(sizeof(int));?//?定義一個(gè)int類型的指針變量p1,并分配存儲(chǔ)單元
int?*p2;??//?定義一個(gè)int類型的指針變量p1,沒(méi)有分配存儲(chǔ)單元
*p1?=?4;??//?對(duì)指針p1指向的存儲(chǔ)單元賦值
p2?=?p1;??//?將指針p2也指向指針p1指向的存儲(chǔ)單元,即*p2=4
printf("%d",?*p2);??//?輸出4
文章名稱:c語(yǔ)言指針拷貝函數(shù),c語(yǔ)言編寫(xiě)字符串拷貝函數(shù)
文章分享:http://www.dlmjj.cn/article/phijos.html