#include?stdio.h
廈門網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
#include?cstring
int?k=1000;
char*?find(char?*a)
{
//char?b[k];
/*最好將b的定義形式寫成下面static的形式。常規(guī)定義會出現(xiàn)警告,而且可能會輸出異常?
因為數(shù)組b會隨著函數(shù)結(jié)束而被釋放內(nèi)存,強行返回則會出現(xiàn)內(nèi)存溢出?
定義成靜態(tài)形式,則數(shù)據(jù)不會因為函數(shù)結(jié)束而被釋放內(nèi)存,但是靜態(tài)數(shù)組大小受到限制,
看你自己的實際情況選擇*/?
static?char?b[50];
int?j=0;
for(int?i=0;istrlen(a);i++)
{
if(a[i]='0'a[i]='9')
{
b[j]=a[i];
j++;
}
}
return?b;
}
int?main()
{
char?a[k];
printf("請輸入字符串:\n");
scanf("%s",a);
char?*c=find(a);
printf("字符串中數(shù)字有:\n");
printf("%s\n",c);
}
用返回值的形式來做數(shù)組問題確實不好,最好是用全局變量的形式做比較好。
有啥問題追問吧。
在主函數(shù)里面,sizeof是數(shù)組占的空間
在作為參數(shù)時,會被轉(zhuǎn)為指針
所以在函數(shù)里面打印的是sizeof(char*)
對于任意指針,sizeof的值都是當(dāng)前編譯器位數(shù)。你的是32位編譯器,輸出就是4
ps:4字節(jié)=32位
既然只傳一行,干嘛要用(*)[]型形參?用char *p或char p[]不就足夠了?另外,50x1000000的數(shù)組大了點,聲明全局?jǐn)?shù)組吧,局部數(shù)組不支持。