【发布时间】:2015-08-19 07:02:04
【问题描述】:
请记住一个让我感到困扰的问题。
我知道 pointers 和 arrays 在 C 中是不同的,因为 pointers 存储 address 而 arrays 存储 'real' values。
但我对string 感到困惑。
char *string = "String";
我读到这条线做了几件事:
一个字符数组由编译器创建,其值为String。
然后,这个数组被认为是一个pointer,程序为指针字符串分配一个指针,该指针指向编译器创建的数组的first element。
这意味着,arrays 被视为pointers。
那么,这个结论是真是假,为什么?
如果为 false,那么 pointers 和 arrays 之间有什么区别?
谢谢。
【问题讨论】:
-
char *string = "String";这应该会给出编译器警告,因为您将const char*分配给char*。 -
@πάνταῥεῖ 字符串文字并不总是
const。然而,UB 一直在尝试改变它们。 -
@Quentin:在 C 中,字符串文字从来都不是
const,现在也不是。在 C++ 中,它们是。 -
@πάνταῥεῖ:字符串文字不是 C 中的
const。 -
几乎是 what is array decaying? 的副本,它提供了适当的答案。