0

C++ 中的 a可以char*接收字符串作为参数吗?如果是这样,这是如何工作的。

例子:

myfunc("hello"); //call
myfunc(char * c)
{ ...
}

字符与字符串的关系究竟如何?

4

2 回答 2

2

字面量的类型"hello"const char[6],即一个字符数组,其中包含字符串空间和空终止字节。

C++ 允许在传递函数参数时将其转换为另一种类型。在这种情况下,数组类型被转换为指针类型,const char *,指针引用第一个具有 value 的字符'h'

C++03 允许转换为char *,删除const,但实际修改字符串是未定义的行为。这样做是为了与老式 C 兼容,并在新的 C++11 标准中被撤销,因此您的示例不会通过更新的编译器。

顺便说一句,由于继承自 C 的遗留问题,如果将函数声明为myfunc(char c[6]). 的类型c仍然是char *.

于 2013-02-07T00:05:33.530 回答
-1

在您的示例中,它不会按预期工作。以这种方式使用字符串(指向开始字符的指针)仅在字符串为空终止时才有效。这就是旧 c_str 的工作方式。如果我们有对第一个字符的引用,我们可以迭代直到找到终止字符“\0”来访问整个字符串。

于 2013-02-06T23:50:21.380 回答