在 C99 中打印带和不带 & 的指针之间的区别

Differences between printing a pointer with and without & in C99

考虑以下代码:

    const char* text = "hi";
    printf("%s\n",text);
    printf("%p\n", &text);
    printf("%p\n", text);

每个 printf 从哪里获取它打印的值?

有什么区别?

所以让我们记住指针是内存地址。 text 是,我怀疑你知道,一个指向第一个(或第 0 个,取决于你喜欢如何看待它)块的 char 数组的指针。 & 是 "address" 运算符,它 returns 内存地址(即指向...的指针)无论其后是什么。由于 text 的文字指针值本身就是某种数据,因此必须将其存储在内存中的某个位置。所以 &text returns 存储 text 值的地址。像这样: