我正在测试一个C程序来检查字符串中的字符数。但是当 我尝试使用“”(空字符串)进行测试时,该函数返回一个奇怪的值。 功能
int getStringLength(char*str)
{
if (str == 0 || str == "") // if input NULL or "" should return 0
{
return 0;
}
}
函数调用
void test_StringLength_a_give_an_empty_string_expect_0(void)
{
TEST_ASSERT_EQUAL(0, getStringLength("")); // (expected value, value return from function)
}
输出我得到 输出的截图
我的问题是为什么
if(str == "")
会导致函数返回这样奇怪的数字吗?
发布于 2018-12-13 15:03:57
==
在C中不执行字符串相等,它比较原始指针值,因此它比较char*
值str
和char*
值""
。C不会自动处理字符串,因此具有相同值的字符串不一定具有相同的内存地址。编译器可以为两个单独的字符串文字赋予相同的地址,但这也不能保证。
https://stackoverflow.com/questions/-100003066
复制相似问题