有关指针函数不可以返回局部变量的地址的三种解决方法

来源:互联网 发布:unity3d ongui常用函数 编辑:程序博客网 时间:2024/06/05 16:56
#include<stdio.h>#include<string.h>#include<stdlib.h>//有关指针函数不可以返回局部变量的地址的三种解决方法#if 0char *mystring(void){    //方法一:用static把局部数组改成静态数组    static char str[20];    strcpy(str,"Welcome li zhonghui!");    return str;}#endif#if 0char *mystring(void){    //方法二:str指向一个字符串常量,字符串常量和静态变量类似,都是程序结束时,才释放内存    char *str = "Welcome li zhonghui!";    return str;}#endif#if 0int main(){    //调用函数    printf("%s\n",mystring());    return 0;}#endif#if 1//方法三 指针函数返回一个堆空间上的地址char *mystring(void){    char *str = NULL;    str = (char *)malloc(20);    //一定记得要写出错判断    if(NULL == str)    {        printf("malloc error\n");        exit(1);        }    strcpy(str,"Welcome li zhonghui!");    return str;}int main(){    char *s;    s = mystring();    if(NULL != s)    {        printf("%s\n",s);        free(s);    }    return 0;}#endif
原创粉丝点击