请教一个驱动中对于字符串指针二次赋值的问题
jw212 2010-09-28 02:01:56 一个很简单的程序:
char * string1= "hello";
//KdPrint(("AnsiString1:%Z\n",string1));//打印hello
printf("AnsiString1:%s\n",string1);//打印hello
string1[0]='H';
string1[1]='E';
string1[2]='L';
string1[3]='L';
string1[4]='O';
//KdPrint(("AnsiString1:%Z\n",string1));//打印HELLO
printf("AnsiString1:%s\n",string1);//打印hello
string1类似于const char*,hello位于常量储存区,一般说来初始化后string指向的值不能再被改变,否则会造成运行时错误(编译可以通过),即string1[0]='H';会出问题!(我用vc6.0验证过了)
但是我在驱动中加入类似的代码
CHAR * string1= "hello";
KdPrint(("AnsiString1:%s\n",string1));//打印hello
string1[0]='H';
string1[1]='E';
string1[2]='L';
string1[3]='L';
string1[4]='O';
KdPrint(("AnsiString1:%s\n",string1));//打印hello
却可以正常打印出来sting1的值?
请教高人有没有见解呢?
以上例子来于 windows驱动开发技术详解 这本书;