在 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
值的地址。像这样:
考虑以下代码:
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
值的地址。像这样: