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"; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |