`if("abc" < "bcd" );
Это эквивалентно:
char* a= "abc";
char* b ="bcd";
if( a < b );
a
и b
- указатели, адреса в памяти.Поэтому независимо от того, что находится в двух строках, они находятся в разных местах памяти.Это означает, что независимо от содержимого двух строк, a
никогда не будет равным b
.
Когда вы "abc"
, вы получаете место в памяти этой строки.Вот что подразумевается под " Вы сравниваете указатели. ";C ++ не похож на другие языки, где machine абстрагируется.Вы работаете с реальными единицами и нулями, которые использует машина.И все живет где-то в памяти.
strcmp
- это функция, которая берет два указателя, а затем сравнивает значения в ячейке памяти, на которую ссылаются эти указатели.
if( ! strcmp(a,b) )
;//then the two strings are the same