【发布时间】:2020-06-21 17:18:55
【问题描述】:
当我们想要一个整数指针时,我们添加 &(int *p = &n)
int n=50;
int *p = &n;
,所以类似地在字符串的情况下不应该和这个一样,
char name[] = "Hello"
char *s = &name;
或者像下面这段代码,
char *s= &"Hello";
而不是这样,
char *s= "Hello";
或
char name[] = "Hello";
char *ptr=name;
或
char name[] = "Hello";
char *ptr;
ptr= name;
我不认为最后两个代码不同。
【问题讨论】:
-
char name[]和char name*是一回事。可能源于数组衰减为指针的整个想法。此外,没有c/c++语言。选择一个。 -
@super 这个问题完全与
c/c++无关,所以,IMO,两个标签都适合 -
@super 实际上不是。至少在 c++ 中,如果您尝试使用字符串文字调用一个接受指针的函数,您会发现它。
char[](或任何数组类型)decays 指向指向第一个元素的指针,但在最轻微的刺激下。但是,同意该问题应该明确询问的是哪种语言。 -
@super -- 它们不是一回事。
const char *name = "abcd";创建一个指向文字字符串的指针。const char name[] = "abcd";创建一个包含 5 个字符的数组,其中包含五个字符'a'、'b'、'c'、'd'和'\0'。 -
由于您标记为 C++,因此您应该使用
std::string处理文本,这样您就可以避免这些指针问题。
标签: c string pointers character