如何保持仅包含const值的变量指针

时间:2014-03-05 15:55:14

标签: c pointers syntax const

我必须在我的代码中使用这些表:

const char *scale_table [4][8] = {
{ "0.0094","0.00752","0.00564","0.0047","0.00376","0.0031333333","0.0025066667","0.00188"},
{ "0.0188","0.01504","0.01128","0.0094","0.00752","0.0062666667","0.0050133333","0.00376"},
{ "0.0376","0.03008","0.02256","0.0188","0.01504","0.0125333333","0.0100266667","0.00752"},
{ "0.0752","0.06016","0.04512","0.0376","0.03008","0.0250666667","0.0200533333","0.01504"},

};

我有一些char *变量只能通过指令

分配
entry = scale_table[i][j];

导致警告“从指针目标类型中分配'const'限定符”。变量显然不是const,我不想将const指针转换为非const,因为字符串永远不会被修改。即指针变量不是const,但总是指向常量值。

这个的正确语法是什么?

1 个答案:

答案 0 :(得分:4)

entry声明为const char *(或等效地,char const *)。这是一个指向常量字符的非常量指针:您可以更改指针本身以使其指向不同的字符,但不能通过指针修改实际字符。

一个常量指针 - 一个你无法改变以指向其他东西的指针 - 将char * constchar const * const来阻止指针被修改的指向字符。

读取涉及const的类型的最简单方法是从右到左:char const *是指向常量char的指针,而char * const是指向{{char的常量指针1}}。 const关键字始终适用于其左侧的类型。 (作为一种特殊情况,如果它是在开头写的,那么它的左边没有任何东西,它就适用于它右边的类型。这就是为什么const char等同于char const。)