代码:
#include <stdio.h>
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是一个字符指针,指向 char 变量所在的位置i。当我添加时,我str = "Hello";不是使用未分配的5那个位置的字节吗?4因为,当我打印它们时,我的代码
str = &i;不应该str并且具有相同的价值?&i当我删除str = "Hello";声明str并且相&i同时。如果str和&i相同,那么我相信当我说它str = "Hello"应该覆盖'a'时'H',其余部分'ello\0'进入后续字节。我相信整个问题在于
str = "Hello"陈述。它似乎不像我想的那样工作。
请有人解释它是如何工作的?