加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 通过引用和内联返回文字

发布时间:2020-12-16 10:23:59 所属栏目:百科 来源:网络整理
导读:据说,在C中通过引用返回一个文字是不好的,因为文字超出范围然后离开函数: const char ToBoolean(bool val) const { return val ? (const char )"1" : (const char )"0"; } ,但是当使用内联时我猜这应该没问题,因为文字的范围现在在调用函数中,或者没有?例
据说,在C中通过引用返回一个文字是不好的,因为文字超出范围然后离开函数:

const char &ToBoolean(bool val) const 
{ 
    return val ? (const char &)"1" : (const char &)"0"; 
}

,但是当使用内联时我猜这应该没问题,因为文字的范围现在在调用函数中,或者没有?例:

inline const char &ToBoolean(bool val) const 
{ 
    return val ? (const char &)"1" : (const char &)"0"; 
}

这就是我计划使用它的方式:

void testToBoolean1()
{
     bool val = true;
     const char *valStr = ToBoolean(val);
     int result = strcmp("1",valStr);
     CPPUNIT_ASSERT_EQUAL(0,result);
}

更新.

如果静态字符串没问题,那么这个怎么样?

inline const char *ToBoolean(bool val) const { 
    char boolStr[6];
    if (val) strcpy(boolStr,"true");
    else strcpy(boolStr,"false");
    return &boolStr;
}

这使用VC 2012编译并运行良好.

解决方法

char const *与char const& (前者是指向char的指针,后者是对单个char的引用.字符串常量是静态分配的,因此可以安全地从函数返回指向它们的指针.

inline char const* ToBoolean(bool val) const 
{ 
    return val ? "1" : "0"; 
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读