Есть код:
int main()
{
char str1[5] = {'a','b','c','d'};
char str2[5] = {'a','b','c','d'};
char str3[5] = {'a','b','c','d'};
if(str1<str2)
{
printf("1");
}
else
{
printf("2");
}
if(str3>str2)
{
printf("1");
}
else
{
printf("2");
}
}
Соответственно, интерпретатор выдает: 11, при его выполнении. Из этого можно понять, что не смотря на равенство этих массивов с точки зрения лексикографического сравнения, интерпретатор считает, что чем позже создан массив, тем он больше.
Из этого можно сделать вывод о том, сравнивается непосредственно память, выделенная под этот массив, или нечто иное, а не проводится лексикографическое сравнение, иначе массивы были бы равны.
Объясните, пожалуйста, на этом примере суть использования памяти под массивы, и что же всё-таки такое: сравнение массивов char на C?