这程序怎么编译不了

来源:百度知道 编辑:UC知道 时间:2024/06/06 02:24:23
初学C 希望大家指定下 那里错拉
#include <stdio.h>

char abc(void);

int main(void)
{
int b;
for (b=0;b<99;b++)
{

abc();
if (aaa[b]=='a'||aaa[b]=='c')
continue;
printf("%c",aaa[b]);
}
system("pause");
return 0;
}
char abc(void)
{
char aaa[99];
printf("输入一组字符");
scanf("%s",aaa);
return aaa;
}

不能在函数里定义aaa[99],你返回的aaa是这个数组头元素的地址,而这个数组的定义域是在函数内,回到主函数这个数组就不存在了,你再用aaa就出错了

函数里面对形参另外开内存
所以在函数结束的时候就释放了
那么你的aaa[]数组在main就不存在的,但你用的是实际上是指针
楼上的没仔细看吧?
怎么说呢,就是作用域不同了,明白吗?
你return的是一个地址

你44这样改
char* abc(void)
{
char aaa[99];
printf("输入一组字符");
scanf("%s",aaa);
return aaa;
}

char*类型是返回值的类型
你返回的是地址
那就把定义成地址再44

把声明也一改,应该就可以了