本站首页    管理页面    写新日志    退出


 

 

 


最新日志

练车
今天是2011年07月02号
温馨
CInternetSession 类
CHttpFile实现Get/Post
在MFC中加一个控制台DOS界面
strtol 函数
outputParam
有关CTime和ColeDateTime
variant_t ,_bstr_t 与

 


 

最近的评论

回复:CHttpFile实现Get/Po
回复:好久没有来了
回复:参数自整定的模糊PID
回复:电子设计大赛自由命题可参考的题目
回复:数字万用表使用方法
回复:公交车上巨搞笑的一幕
回复:电子设计大赛自由命题可参考的题目
回复:电子设计大赛自由命题可参考的题目
回复:电子设计大赛自由命题可参考的题目
回复:暑假回来

 


 

连接




    

指针初始化引出的问题
sccwqiang 发表于 2008/10/31 12:24:42

对指针初始化时,引出的应该注意的问题小结:(1)先看例子:#include <iostream.h> void main(){char *p,*p1="hello first!";while((*(p++) = *(p1++)) != 0); cout<<p<<endl;}错处:p定义时没有初始化,p是指向不定,是一个野指针。p++可能引用得空间为非法的。编译时不会出错,但运行时会造成程序崩溃。 (2)把上面的p初始化为NULL#include <iostream.h> void main(){char *p=NULL,*p1="hello first!";while((*(p++) = *(p1++)) != 0); cout<<p<<endl;}//也错,NULL表示没有任何指向。p++没有任何意义,运行时会造成程序崩溃。这里就应该想到不能对NULL的指针进行直接操作。 (3)现在为p初始化为" ":void main(){char *p=" ",*p1="hello first!"; while((*(p++) = *(p1++)) != 0); cout<<p<<endl;}//错:p指向的是一个const常量的内容,可以通过*(p++)形式引用该值,但是不能改变它指向const的内容。(4)#include <iostream.h>#include <string.h>void main(){ char c[]=""; char *p=c,*p1="hello first!"; char *p_start=p; while((*(p++) = *(p1++)) != 0);  cout<<c<<endl;}//此时数组是一系列的变量了,也就是p一有指向,二不是指向常量的而是指向变量的。所以按理应该行的。问题出在c太小,造成了数组越界,所以错掉!把c的大小改来不比"hello first!"小就行了。(5)对于的就想到用new来初始化了:#include <iostream.h>#include <string.h>void main(){ char *p,*p1="hello first!"; p=new char; char *p_start=p; while((*(p++) = *(p1++)) != 0);  cout<<p_start<<endl;}//现在就可以了,哈,不过,我认为在new时最好还是把它的大小给指出来,如new char[strlen(p1)+1];如果不指定大小,我想p++会指向一些已用得地址,而这些地址又不能随便改,就会造成诸如野指针样程序崩溃了。 小结:对于前面的问题,不防这样来写:#include <iostream.h>#include <string.h>void main(){ char *p=NULL,*p1="hello first!"; p=new char[strlen(p1)+1]; //p=new char;//觉得最好别这样子,new char只相当于得到一个char对 char *p_start=p;//象,分配一个字符的空间。 while((*(p++) = *(p1++)) != 0);  cout<<p_start<<endl;}

阅读全文(2348) | 回复(0) | 编辑 | 精华


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 

 

 


站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.688 second(s), page refreshed 144804552 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号