Как строковые литералы компилируются в C?Насколько я понимаю, в test1 строка "hello" помещается компилятором в сегмент данных, а во 2-й строке p назначается этот жестко закодированный виртуальный адрес.Это правильно?и что нет принципиальной разницы между тем, как работает test1 и как работает test2.
Некоторый код:
#include <stdio.h>
test1();
test2();
test3();
main()
{
test1();
test2();
//test3();
}
test1()
{
char *p;
p="hello";
}
test2()
{
char *p="hello";
}
test3()
{
char *p;
strcpy(p,"hello");
}
любая ссылка из стандарта C будет принята с благодарностью, так что я могу понять этовещь в глубине с точки зрения компилятора.