C++ strcmp()可以比较动态字符数组和静态字符数组吗?
也许这是一个愚蠢的问题,但我问这个问题的原因是因为我使用C++ strcmp()可以比较动态字符数组和静态字符数组吗?,c++,arrays,C++,Arrays,也许这是一个愚蠢的问题,但我问这个问题的原因是因为我使用strcmp()来比较动态数组和静态数组,它似乎给出了错误的结果。数组应该相等,但是strcmp()返回false。当我暂停程序时,这些数组之间唯一不同的两件事就是它们的内存位置 我不能向您展示全部代码,但这是我函数的一部分,其中包含以下两个变量: stock * Table::retrieveStock(const char tick[]) { uint8_t index = hashing(tick); if (tabl
strcmp()
来比较动态数组和静态数组,它似乎给出了错误的结果。数组应该相等,但是strcmp()
返回false。当我暂停程序时,这些数组之间唯一不同的两件事就是它们的内存位置
我不能向您展示全部代码,但这是我函数的一部分,其中包含以下两个变量:
stock * Table::retrieveStock(const char tick[])
{
uint8_t index = hashing(tick);
if (table[index])
{
bool test = strcmp(table[index]->data->getTick(), tick);
//irrelevant code
下面是一些指针在表
类中的声明方式:
struct node
{
stock * data;
node * next;
node()
{
stock();
next = nullptr;
}
node(stock *& item)
{
data = item;
next = nullptr;
}
};
node ** table;
我有一个类对象数组,不管怎样,关键是我比较了两个应该相等的刻度值。我正在使用getTick()
函数从对象中拉出一个:
const char * stock::getTick() const
{
return tick;
}
一个被传递到函数:const char tick[]
。我不知道我的代码到底出了什么问题。我很想给你们更多的代码来使用,但我看不出它除了让你们更难解决这个问题之外还能做什么
编辑:也许这会有帮助;我只是想到了。这正是我的编译器所说的值:
curr->data 0x005d93e8 {tick=0x005d9f38 "TSLA" name=0x005da100 "2" value=2.00000000 ...} stock *
及
strcmp()。它不会返回<代码>真< /COD>或<代码> false 。正如你所期待的。< /P>你的问题是C++而不是C,请更改标签。@ BBRUN我把它标记为C,以阻止人们告诉我使用字符串类。我已经改变了,但是你怎么知道C++和非C都是空结尾的字符串?code>strcmp
依赖于以null结尾的。@JonathanPotter如果字符串不匹配,它会返回什么?@JonathanPotter嗯,我认为strcmp()返回的是真值还是假值这一事实是我错误的根源。如果你想把它作为一个答案,我很乐意把它标记为正确答案。请确保您在回答中指定将布尔值设置为0会使其为假。谢谢。我觉得自己像个白痴,没有意识到这一点。我甚至查了一下strcmp()函数,发现它返回的是一个整数而不是bool,对此我一无所知。我希望我给你的互联网点数足以补偿我浪费你的时间。
tick 0x004afb20 "TSLA" const char *