, Это не так долго читать и даст вам важное понимание таких вещей.

троковые литералы компилируются в 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 будет принята с благодарностью, так что я могу глубоко понять эту вещь с точки зрения компилятора.

Ответы на вопрос(2)

Ваш ответ на вопрос