c语言中,函数中变量定义static有什么作用?遇到一个怪题(在线)
书上有个题,在函数中变量定义成static去掉后就有乱码,这里的static有什么作用?(菜鸟)#include"stdio.h"#include"string.h"ch...
书上有个题,在函数中变量定义成static去掉后就有乱码,这里的static有什么作用?(菜鸟)
#include "stdio.h"
#include "string.h"
char*test(char*ch)
{
static char buf[80];//如果去掉就错了
strcpy(buf,ch);
return buf;
}
void main()
{
printf("%s\n",test("abcd"));
printf("%s\n",test("a"));
} 展开
#include "stdio.h"
#include "string.h"
char*test(char*ch)
{
static char buf[80];//如果去掉就错了
strcpy(buf,ch);
return buf;
}
void main()
{
printf("%s\n",test("abcd"));
printf("%s\n",test("a"));
} 展开
2个回答
展开全部
//静态变量不随函数的结束,而回收空间,因为它的空间分配在静态数据区,相当于全局变量
//如果去掉的static的话,那就是个局部变量,它随着函数运行结束,空间被回收了,所以在返回的时候,是一个空地址,故出错
在百度上搜一搜,内存与指针管理,有更详细的解释!
//如果去掉的static的话,那就是个局部变量,它随着函数运行结束,空间被回收了,所以在返回的时候,是一个空地址,故出错
在百度上搜一搜,内存与指针管理,有更详细的解释!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询