重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在主函数里面,sizeof是数组占的空间
坚守“ 做人真诚 · 做事靠谱 · 口碑至上 · 高效敬业 ”的价值观,专业网站建设服务10余年为成都办公空间设计小微创业公司专业提供企业网站设计营销网站建设商城网站建设手机网站建设小程序网站建设网站改版,从内容策划、视觉设计、底层架构、网页布局、功能开发迭代于一体的高端网站建设服务。
在作为参数时,会被转为指针
所以在函数里面打印的是sizeof(char*)
对于任意指针,sizeof的值都是当前编译器位数。你的是32位编译器,输出就是4
ps:4字节=32位
不可能达到目的。因为C语言中没有引用这类型,C++才有。另,C/C++都不支持传递数组,只能传递数组的首元素或行指针,所以即使是C++,也只能传递数组指针的引用,而不可能传递数组的引用,因为数组没有引用。
#include stdio.h
#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);
}
用返回值的形式来做数组问题确实不好,最好是用全局变量的形式做比较好。
有啥问题追问吧。