Я знаю, что для сравнения двух строк в C вам нужно использовать strcmp()
. Но я попытался сравнить две строки с оператором ==
, и это сработало. Я не знаю, как, потому что он просто сравнивает адрес двух строк. Он не должен работать, если строки разные. Но потом я напечатал адрес строк:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* str1 = "First";
char* str2 = "Second";
char* str3 = "First";
printf("%p %p %p", str1, str2, str3);
return 0;
}
И результат был:
00403024 0040302A 00403024
Process returned 0 (0x0) execution time : 0.109 s
Press any key to continue.
Как возможно, что str1
и str3
имеют один и тот же адрес? Они могут содержать одну и ту же строку, но они не являются одной и той же переменной.