【问题标题】:Why function can change `const char * & value`? [duplicate]为什么函数可以改变`const char * & value`? [复制]
【发布时间】:2015-07-09 17:49:49
【问题描述】:

这是一个以const char * &为参数的函数示例。

#include <iostream>
using namespace std;

char test[] = "Test";

void func(const char * & str)
{
    str = &test[0];
}

int main() {
    const char * mytest;

    func(mytest);

    cout << mytest << endl;

    return 0;
}

为什么会这样? (http://ideone.com/7NwmYd)

const 在这里是什么意思?为什么func()可以改变str给这个函数?

更新。新手问题,请不要减分。

【问题讨论】:

  • 从右到左阅读:它引用指向常量字符的指针。
  • this 你在想什么吗?
  • 已将其标记为骗子(我假设混淆是围绕const,而不是&amp;...)

标签: c++ pointers reference constants


【解决方案1】:

cost 指的是紧靠其左侧的声明部分,除非在特殊情况下 const 是第一个,在这种情况下紧靠其右侧:

const char * &  // the char is const, the * is not
char const * &  // the char is const, the * is not
char * const &  // the * is const, the char is not
char const * const &  // the char and * are both const

您有一个指向 const char 的非 const 指针并修改了指针(不是 char),因此编译器没有什么可抱怨的。

【讨论】:

    猜你喜欢
    • 2010-10-01
    • 2011-11-29
    • 2017-03-25
    • 2019-02-01
    • 2012-06-09
    • 2014-02-15
    • 2019-12-06
    • 1970-01-01
    • 2012-12-26
    相关资源
    最近更新 更多