char * str; ул = «HELLO»; Как это работает без выделения памяти для строки?
Код:
#include
int main() {
char *str;
char i = 'a';
str = &i;
str = "Hello";
printf("%s, %c, %x, %x", str, i, str, &i);
return 0;
}
Я получаю этот вывод:
Hello, a, 403064, 28ff0b
У меня следующие два сомнения:
Как я могу сохранить строку без выделения памяти для нее.str
является символьным указателем и указывает, где переменная chari
, Когда я добавлюstr = "Hello";
Арен»т я использую5
байты из этого места4
из которых не выделены?
С тех пор, я кодstr = &i;
не долженstr
а также&i
имеют то же значение, когда я печатаю их? Когда я удаляюstr = "Hello";
заявлениеstr
а также&i
такие же. И еслиstr
а также&i
то же самое, то я верю, когда я говорюstr = "Hello"
это должно переписать'a'
с'H'
и остальное'ello\0'
войти в последующие байты.
Я считаю, что вся проблема сstr = "Hello"
заявление. Это некажется, работает так, как я думаю.
Пожалуйста, кто-нибудь объясните, как это работает ??