新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include stdio.h
厦门网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。创新互联2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
#include cstring
int k=1000;
char* find(char *a)
{
//char b[k];
/*最好将b的定义形式写成下面static的形式。常规定义会出现警告,而且可能会输出异常
因为数组b会随着函数结束而被释放内存,强行返回则会出现内存溢出
定义成静态形式,则数据不会因为函数结束而被释放内存,但是静态数组大小受到限制,
看你自己的实际情况选择*/
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("字符串中数字有:\n");
printf("%s\n",c);
}
用返回值的形式来做数组问题确实不好,最好是用全局变量的形式做比较好。
有啥问题追问吧。
在主函数里面,sizeof是数组占的空间
在作为参数时,会被转为指针
所以在函数里面打印的是sizeof(char*)
对于任意指针,sizeof的值都是当前编译器位数。你的是32位编译器,输出就是4
ps:4字节=32位
既然只传一行,干嘛要用(*)[]型形参?用char *p或char p[]不就足够了?另外,50x1000000的数组大了点,声明全局数组吧,局部数组不支持。