0
#include <iostream>
int main() {
char* a = "test";
char b[] = "test";
if (a == "test") // work
std::cout << "1";
if (b == "test") // don't
std::cout << "2";
}
在兩個變體中究竟發生了什麼?只是記憶地址比較?不同之處比較字符數組和char字符串的指針字符串字符串
相關:除非你的編譯器足夠聰明來合併重複的字符串常量(通常是一個配置標誌),否則if(a ==「test」)......也不起作用。 – WhozCraig
我想知道如果這是整個代碼,'b ==「test」'是否在法律上允許爲真。可能不是 –
我是btw。令人驚訝的是,編譯器允許'char * a =「test」;'這是有效的c代碼,但在C++中無效,因爲字符串文字的類型爲'const char [N]',可以轉換爲'const char *但不是'char *' – MikeMB