阅读:2348回复:1
请教一个驱动中对于字符串指针二次赋值的问题
一个很简单的程序:
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驱动开发技术详解 这本书; |
|
禁止发言
|
沙发#
发布于:2010-09-28 17:50
用户被禁言,该主题自动屏蔽! |