jw212
驱动牛犊
驱动牛犊
  • 注册日期2008-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望64点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:2348回复:1

请教一个驱动中对于字符串指针二次赋值的问题

楼主#
更多 发布于:2010-09-28 14:13
一个很简单的程序:
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驱动开发技术详解 这本书;
wanghui219
禁止发言
禁止发言
  • 注册日期2007-08-28
  • 最后登录2019-07-29
  • 粉丝4
  • 关注3
  • 积分101166分
  • 威望505351点
  • 贡献值0点
  • 好评度137点
  • 原创分0分
  • 专家分4分
  • 社区居民
沙发#
发布于:2010-09-28 17:50
用户被禁言,该主题自动屏蔽!
游客

返回顶部