在主函數(shù)里面,sizeof是數(shù)組占的空間
堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網(wǎng)站建設服務10余年為成都辦公空間設計小微創(chuàng)業(yè)公司專業(yè)提供企業(yè)網(wǎng)站設計營銷網(wǎng)站建設商城網(wǎng)站建設手機網(wǎng)站建設小程序網(wǎng)站建設網(wǎng)站改版,從內容策劃、視覺設計、底層架構、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設服務。
在作為參數(shù)時,會被轉為指針
所以在函數(shù)里面打印的是sizeof(char*)
對于任意指針,sizeof的值都是當前編譯器位數(shù)。你的是32位編譯器,輸出就是4
ps:4字節(jié)=32位
不可能達到目的。因為C語言中沒有引用這類型,C++才有。另,C/C++都不支持傳遞數(shù)組,只能傳遞數(shù)組的首元素或行指針,所以即使是C++,也只能傳遞數(shù)組指針的引用,而不可能傳遞數(shù)組的引用,因為數(shù)組沒有引用。
#include?stdio.h
#include?cstring
int?k=1000;
char*?find(char?*a)
{
//char?b[k];
/*最好將b的定義形式寫成下面static的形式。常規(guī)定義會出現(xiàn)警告,而且可能會輸出異常?
因為數(shù)組b會隨著函數(shù)結束而被釋放內存,強行返回則會出現(xiàn)內存溢出?
定義成靜態(tài)形式,則數(shù)據(jù)不會因為函數(shù)結束而被釋放內存,但是靜態(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ù)組問題確實不好,最好是用全局變量的形式做比較好。
有啥問題追問吧。