代码:
#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"
陈述。它似乎不像我想的那样工作。
请有人解释它是如何工作的?