`const char * const`和`const char *`有什么区别?

132

我正在运行一些示例程序以重新熟悉 C++,并遇到了以下问题。首先是示例代码:

void print_string(const char * the_string)
{
    cout << the_string << endl;
}

int main () {
    print_string("What's up?");
}

在上面的代码中,print_string函数的参数可以改为const char * const the_string。对于这个问题哪个更正确?

我理解它们之间的区别是一个是指向常量字符的指针,而另一个是常量指针指向常量字符。但是为什么两者都能工作呢?什么情况下会有影响?


“卓越问题”徽章 12年后获得 - Peter Mortensen
12个回答

1

我认为这很少有关,因为您的函数不会使用&*the_string或**the_string等参数进行调用。指针本身是值类型参数,因此即使您修改它,也不会更改用于调用函数的副本。您展示的版本确保字符串不会更改,我认为在这种情况下这已经足够了。


-2
两者之间的区别在于,char* 可以指向任意指针。相比之下,const char* 指向可执行文件中数据部分定义的常量。因此,您不能修改 const char* 字符串的字符值。

1
我不是在问char和const char之间的区别。我在问const char和const char const之间的区别。 - pict
2
这个答案是不正确的。一个 const char* 可以指向任何地方。 - Cubic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接