我写了这段代码
g.title('eta_n as a Function of Time', font=',18') failed.
代码已编译并成功运行。
我如何能够访问'const char * b'指向的内存并进行修改?这是否意味着共享内存const定义无关紧要?
谢谢
答案 0 :(得分:6)
const char* b
表示您无法通过 b
将事件b
修改为。但你可以通过其他方式修改它,只要事情不是const
首先 * 。
这是一个简化的例子:
int a = 0;
const int* p = &a;
a = 42; // OK! a is not const.
*p = 43; // ERROR! Cannot modify a through p.
const int b = 0;
p = &b;
b = 43; // ERROR! b is const.
*这适用于C ++。 C
中的细节可能略有不同答案 1 :(得分:2)
b
类型const char *
的声明意味着您无法使用指针b
本身修改数据,它不会影响任何意义上的内存b
。
答案 2 :(得分:2)
char * p
p
是指向非常量字符的非常量。我们可以使用p
更改字符值,并将p
更改为指向另一个字符。
char const * p
const char * p
p
是指向常量字符的非常量指针。我们无法使用p
更改字符值,但可以将p
更改为指向其他字符。
char * const p
p
是指向非常量字符的常量指针。我们可以使用p
更改字符值,但无法将p
更改为指向其他字符。
char const * const p
const char * const p
p
是指向常量字符的常量指针。我们无法使用p
更改字符值,也不能将p
更改为指向其他字符。
在您的问题中,a
和b
指向相同的记忆。 b
声明为const char *
,因此它是指向常量字符的非常量指针。这并不意味着任何其他人都无法修改角色。只有您无法使用b
修改角色。
答案 3 :(得分:1)
const char * b
只是意味着您无法通过b
修改b
指向的内容。它指向的地方是一个普通的记忆位置,并且可以被指向它的任何其他东西修改。
由const
表示的合约仅对const附加的变量或方法有效。
答案 4 :(得分:1)
我如何能够访问
'const char* b'
指向的内存并进行修改?
您可以访问b
指向的内存,无论它是否被声明为
const char* b;
或
char* b;
您将无法通过b
修改该值。以下是错误:
b[1] = 'E';
这是否意味着共享内存const定义无关紧要?
const
限定符很重要 - 无论是否共享内存。你使用过:
const char a[] = "ABCD";
const char* b = a;
以下也是一个错误。
a[1] = 'E';