c语言分段函数返回字符 c语言分段函数格式

C语言如何返回字符串new 是动态分配(在堆上分配) , 你向系统要了 50 B 的内存,如
char* str=new char[50];// 50 * 1B
堆上分配就是这情况 , 你不释放(delete一下),它就认为你在用着;不会再给别人用
如果给你的你不用了,或是你把它给忘记了,那就算是内存泄露了、
当然,你程序退出的时候,系统会替你回收、不过这样的习惯不好,你想,如果你写了死循环(操作系统、服务器程序等)、那里面不断滴在内存泄露 , 你就危险了、后来发现,不知不觉,内存怎么就不够用了,明明自己用的不多啊、、
修改一下:
char* fanhui()
{
static char str[100];// 局部变量,静态局部变量 , 它在第一次调用的时候分配 , 
cinstr;// 函数返回了,str的空间还是存在的,也就是不会重复申请、
return str;// 而且,函数外面通过,指针也是可以访问他们的、、
}

char* fanhui()
{
char str[100];// 局部变量,默认动态局部变量,它在每一次调用的时候分配 , 
cinstr;// 函数返回了 , str的空间也就不存在了 , 他是在,栈,上分配的、
return str;// 函数外面通过,指针想访问?、非法?。。∪硕疾辉诹? ,你喊他干嘛?。浚?
}
C语言分段函数#include math.h
int main()
{
double x,y;
scanf("%lf",x);
if (x0)
y=0.5*(-x);
else
if (x10)
y=exp(x)+3;
else
if(x20)
y=log10(x);
else
if (x30)
y=pow(x,1.5);
else
if (x50)
y=pow (x,0.5)-1;
else
y=3*cos(x);
printf("y=%lf\n",y);
return 0;
}
扩展资料
return 0代表程序正常退出 。return是C++预定义的语句,它提供了终止函数执行的一种方式 。当return语句提供了一个值时,这个值就成为函数的返回值 。
return语句用来结束循环,或返回一个函数的值 。
1、return 0,说明程序正常退出,返回到主程序继续往下执行 。
2、return 1,说明程序异常退出 , 返回主调函数来处理 , 继续往下执行 。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已 。
C语言可以返回字符串吗?C语言返回字符串有四种方式:1 。使用堆空间c语言分段函数返回字符,返回申请c语言分段函数返回字符的堆地址c语言分段函数返回字符,注意释放2 。函数参数传递指针c语言分段函数返回字符,返回该指针3 。返回函数内定义的静态变量(共享)4 。返回全局变量使用分配的内存,地址是有效 \x0d\x0achar *fun() \x0d\x0a{ \x0d\x0achar* s = (char*)calloc(100, sizeof(char*) ); \x0d\x0aif (s) \x0d\x0astrcpy ( s , "abc " ); \x0d\x0areturn s; \x0d\x0a} \x0d\x0a但这种方式需要注意 , 必须由使用将将返回的地址free掉 \x0d\x0a\x0d\x0a将地址由入参传入 \x0d\x0achar* fun(char*s) \x0d\x0a{ \x0d\x0aif (s) \x0d\x0astrcpy(s, "abc "); \x0d\x0areturn s; \x0d\x0a} \x0d\x0a这种方式调用都要注意给s分配的大小是足够 。\x0d\x0a可以这样: \x0d\x0achar* fun(char*s, int len) \x0d\x0a{ \x0d\x0aif (s) \x0d\x0a{ \x0d\x0astrncpy(s, "abc ", len-1); \x0d\x0as[len-1] = 0; \x0d\x0a} \x0d\x0areturn s; \x0d\x0a} \x0d\x0a\x0d\x0a或才使用局部静态变量 \x0d\x0achar* fun() \x0d\x0a{ \x0d\x0astatic char s[100]; \x0d\x0astrcpy(s, "abc "); \x0d\x0areturn s; \x0d\x0a} \x0d\x0a这种方式需要注意,不要修改返回的这个字符串,由于是共享地址,对它的修改会反应到每个调用者的 。可以这样: \x0d\x0aconst char* fun() \x0d\x0a{ \x0d\x0astatic char s[100]; \x0d\x0astrcpy(s, "abc "); \x0d\x0areturn s; \x0d\x0a} \x0d\x0a\x0d\x0a还有一种是使用全局变量 \x0d\x0achar g_s[100]; \x0d\x0achar* fun() \x0d\x0a{ \x0d\x0astrcpy(g_s, "abc "); \x0d\x0areturn s; \x0d\x0a} \x0d\x0a同样的,也要注意这个变量可存储的最大空间 。

推荐阅读