小编dfa*_*hin的帖子

返回带有char*的字符串的内联声明

第一个给大家,第一个发布在这里.

今天我发现自己想知道这段代码是否正确,它是由朋友写的时间用于微控制器,我没有机会再问他了.

该程序工作正常,但我不能真正决定它是否运气好运(不要相信编程运气).我甚至不知道这篇文章的标题是否正确,对不起,如果它可能会产生误导.代码:

char  *textStatusErrorMessage( unsigned int codeStatus )
{
    switch ( codeStatus ) {

    case STATUS_1:
        return ( (char  *) " Status: 1 " );
        break;     
    case STATUS_2:
        return ( (char  *) " Status: 2 " );
        break;      
    default:
        sprintf( tmpBuf, " UNKNOWN STATUS   %03d ", codeStatus );
        return ( (char  *) tmpBuf ); //tmpBuf is global
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

更准确地说,这种语法对我来说有点模糊.

return ( (char  *) " Status: 1 " );
Run Code Online (Sandbox Code Playgroud)

它返回什么的char*?保存"Status:1"字符串在哪里?堆/堆栈???

实现时,字符串在函数的范围内,我假设在使用return语句离开函数后,我无法控制函数本身返回的指针.

从我看到的方式来看,我将拥有一个具有不同可能的字符串选项的全局数组,并返回指向CASE选择的正确数组的指针.所以我知道我返回的指针是一个明确定义的内存区域.

那么这段代码是错还是不错?哪个是最正确的解决方案?

谢谢DAN

c char

3
推荐指数
1
解决办法
514
查看次数

标签 统计

c ×1

char ×1