2014-03-05 47 views
1

我有这样的在我的码表工作:如何保持变量的指针,只有持有常量值

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"}, 

};

我有一些字符*变量只能取得指令

entry = scale_table[i][j]; 

这将导致警告“分配丢弃‘常量’指针目标类型的限定词”分配。这些变量显然不是const的,我不想将const指针转换为非const,因为这些字符串从不修改。即指针变量不是常量,而是始终指向常量值。

这是什么正确的语法?

回答

4

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

恒定指针 - 一个你无法改变,以点别的东西 - 将是char * const,或者char const * const同时防止指针被修改指向的字符。

阅读涉及const类型的最简单的方法是由右至左:char const *是一个指向常量char,并char * const是一个常量指针charconst关键字始终适用于其左侧的类型。 (作为一种特殊情况,如果它在开头写入以便其左侧没有任何内容,则适用于其右侧的类型,因此const char相当于char const。)