gpt4 book ai didi

c++ - 输出指针的 const 前缀

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:42 25 4
gpt4 key购买 nike

我有一段 C++ 代码,我觉得有点困惑:

int foo (const char* &bar)

在这种情况下,如果我想将条形指针写入为:

bar = ...

没关系。那么我应该如何理解这个const。 const 指针与指针指向 const 值有何不同?

最佳答案

const 适用于它左边的任何东西,除非它左边没有任何东西,在这种情况下它适用于它右边的任何东西。这意味着在您的情况下,bar 是对指向 const char 的指针的引用。 bar 本身不是常量,可以修改。

如果您将 bar 更改为 char * const &bar,即 - 对指向 char 的常量指针的引用,您将不会无法完成该任务。示例:

int foo (char * const &bar)
{
bar = 0;
return 1;
}

并尝试编译它:

$ clang++ -c -o example.o example.cpp
example.cpp:3:9: error: read-only variable is not assignable
bar = 0;
~~~ ^
1 error generated.
make: *** [example.o] Error 1

您可以使用 cdecl/c++decl如果它们给您带来麻烦,请解析这些声明:

$ c++decl
Type `help' or `?' for help
c++decl> explain const char * &bar
declare bar as reference to pointer to const char
c++decl> explain char * const &bar
declare bar as reference to const pointer to char

关于c++ - 输出指针的 const 前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com