当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·createwindow    »显示摘要«
    摘要: 兄弟们:   有谁知道createwindow这个api函数能不能create listctrl,还有自己如果想重载一个类的话,是不是也要重写代码,不能把原来在mfc下重载的类拿过来用 ......
 ·求助,关于gprs    »显示摘要«
    摘要: 哪位高人知道我如何联系到摩托罗拉在中国的做模块的部门啊。我买了一款gprs模块g20,想了解一些典型的应用范例,我是做单片机开发,听说开发商会提供这些东西,但是不知道从哪里找,谁能帮帮我 ......


char* s=0 福兮:祸兮

这几天对异常很感兴趣,在学习的时候,写了一个简单的语句  
  如下  
  Onbutton2()  
  {  
      char*   s=0;  
      char   ss=*s;  
  }在vc里面竟然正常运行.  
  难道语句被它优化了??还是其他原因?  
  方正在c++builder6.0里面  
  是抛出异常了??  
  求教中???

NO.1   作者: bluebohe

char*   s=0;没问题  
  其实就是  
  char   *s=NULL;  
  char   ss=*S;只要你不为ss赋值也没问题

NO.2   作者: Ozzman

你的语句的意思是  
  char*   s;  
  s   =   NULL;  
  char   ss   =   *s;  
  你看明白了!你这么做有什么意思!  
 

NO.3   作者: bluebohe

debug里面不能访问不属于他的绝对内存地址,release就不管了,只要不赋值就不出错误

NO.4   作者: huang_yu

char*   s;  
  s   =   NULL;  
  就是这样。语法上没错,具体的使用就看看实际情况了。  
  一般结构体的下一个指针也为NULL;

NO.5   作者: shanjicn

char*   s=0;   已经超出了程序的地址范围,再用这个非法的地址给ss赋值当然就报错了!

NO.6   作者: talcon_hu

这是因为:在release中编译器做了优化,char   ss=*s并没有生成代码,  
  只有在用到ss的时候才真正的生成,你如果在后面加上  
  cout   <<   s;//在控制台程序  
     
    保准你死翘翘  
   
  具体检验方法可以这样:  
   
  __asm   int   1  
  char   ss=*s;  
  __asm   int   1  
   
  运行程序后出错,按Cancel,可以发现在int   1   和int   1什么也没有,说明编译器编译的时候优化了代码  
 


    摘要: 如何将bmp设为listctrl的背景图片???????? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE