函数中的局部变量在退出函数时会被销毁

/*  函数中的局部变量在退出函数时会被销毁
*  >> 1
*  返回指向字符串常量的指针
*/
char * getstra()
{
    return "how are you" ;
}
/*
* >> 2
* 使用全局声名的数组
*/
char global_char[]="how are you";
char *getstrb()
{
    return global_char ;
}
/*  >> 3
*  使用静态数组
*/
char *getstrc()
{
    static char buffer[20];
    strcpy( buffer , "how are you" );
    return buffer ;
}
/*  >> 4
*  显示分配内存,保存返回值
*
*/
char *getstrd()
{
    char *s = (char*)malloc(20);
    memset( s , 0 , 20 );
    strcpy( s , "how are you" );
    return s ;
}
/*  >> 5
*  调用者分配内存保存返回的值
*/
char *getstre(char *result , int size)
{
    char *str = "how are you ";
    if(size > strlen(str))
      size=strlen(str);
    strncpy( result , "how are you" , size );
    return result ;
}

int main()
{
    printf( "%s\n" , getstra() );
    printf( "%s\n" , getstrb() );
    printf( "%s\n" , getstrc() );
    char *str = getstrd();
    printf( "%s\n" , str);
    free( str );
    char *res = (char*)malloc(20);
    getstre(res,20);
    puts( res );
    free( res );

}

posted @ 2009-11-15 09:34  jackyxm  阅读(812)  评论(0)    收藏  举报