能否举个例子。char *const p初始化一个指针,然后再改变p的地址。char const *p初始化一个指针,在改变p指向的内容
不是所有编译器都能这么写,但是VC++ 6.0可以。
#include <stdio.h>
int main()
{
char *const p = "hello";
*((char *)(void *)&p) = (char)"world";
printf("%s", p);
}
不知道你这个问题是否已经解决, 如果还没有解决的话:声名只读变量
//const 在前面
const int nValue; //const 修饰的是int,整型固定,但是nValue的值是也不变的
const char* pContent; //const 修饰的是char*, 指针类型固定,但是pContent是可以变的
const char* const pContent; //pContent和*pContent都被const修饰,都不可变。
//const 在后面
int const nValue; //const修饰的是nValue,在一定程度上和const int nValue相同,nValue的值不能修改
char const *pContent; //const修饰的是*,pContent是可以改变的
char* const pContent; //const修饰的是pContent,*pContent是可以改变的
char const * const pContent; //pContent和*pContent都被const修饰, 都不可以改
//const推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。