我是 C 编程的新手。我对指针的混乱行为感到困惑。特别是在涉及字符串和数组时。
我知道我写不出来
#include <stdio.h>
int main()
{
int *number=5;
printf("%d",*number);
}
因为显然它会尝试写入内存的第 5 个位置。这会使程序崩溃。我必须初始化“数字”。
但是当涉及到字符串时,我可以这样写,
#include <stdio.h>
int main()
{
char *name="xxxxx";
printf(name);
}
它也有效。所以这意味着它隐式初始化“name”指针。我也知道 name=&name[0] 但我也发现了 name=&name。怎么会这样?因为,对我来说,它看起来是两个同名的变量。谁能告诉我字符串是如何在内存中创建的?(一直以来,我假设它创建了 name[0].....name[n-1] 和另一个名为“name”的变量(一个指针),在里面我们把名字[0]的位置。似乎是我错了。)
PS:-我的英语可能不太好,如果有人能给我一个关于上述问题的链接,将不胜感激。