C问题——指针.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C问题——指针

C问题——指针.txt20如果你努力去发现美好,美好会发现你;如果你努力去尊重他人,你也会获得别人尊重;如果你努力去帮助他人,你也会得到他人的帮助。 生命就像一种回音,你送出什么它就送回什么,你播种什么就收获什么,你给予什么就得到什么。. 主要目的是总结C/c++理一些常见的错误 希望相关方面有问题的朋友们可以先看看此贴,说不定对你有帮助,也可以省去一些重复问题. /****所有代码都未加头文件,想运行请自行添加.*************************/ 1:试图用cout输出全局类的析构.(可能是VC6的问题,如果你的编译器没出现问题,很好,) class CDemo { public: CDemo(const char *str); ~CDemo(); private: char name[20]; }; CDemo::CDemo(const char* str) { strcpy(name,str); cout cout:Construction called for name endl; } CDemo::~CDemo() { cout cout:Destruction called for name endl; printf( printf:Destruction called for %s\n,name); } static CDemo GlobleObject(globeobject); //这个是我们关注的,cout:Destruction called for globeobject并不会出现 void main() { CDemo LocalObjectInMain(localobjectinmain); CDemo * pHeapObjectInMain=new CDemo(heapobjectinmain); CDemo *pHeapObjectInFunc=new CDemo(heapobjectinfunc); static CDemo StaticObject=staticobject; } 这里globeobject的析构并没有被显示出来,为何呢? 加一句printf你就知道为何了. 因为cout析构在GlobleObject析构前. 2.关于VC6的问题: VC6对于friend,模板等几个bug,建议换VS测试. 如,重载操作符号,如果friend符号的定义在类体外会报错. 模板嵌套: vector vector int bad; //error,VC6会把2维容器 认作输出符号. vector vector int good; 此外VC6下编译模板,出现一堆警告的话,你在头文件前加 #pragma warning(disable:4786) 3.关于型参,实参不分,指针搞不清楚. void Exchg1(int x, int y) { int tmp; tmp=x; x=y; y=tmp; printf(Exchg1:x=%d,y=%d\n,x,y); } void Exchg2(int x, int y) { int tmp; tmp=x; x=y; y=tmp; printf(Exchg2:x=%d,y=%d\n,x,y); } void Exchg3(int *x, int *y) { int tmp; tmp=*x; *x=*y; *y=tmp; printf(Exchg3:x=%d,y=%d\n,*x,*y); } void main() { int a=4,b=6; Exchg1 (a,b) ; printf(a=%d,b=%d\n,a,b); Exchg2 (a,b); printf(a=%d,b=%d\n,a,b); Exchg3(a,b) ; printf(a=%d,b=%d\n,a,b); } 4.C风格字符串与标准库类型string不分 int i; char * ch = cchars; //这是C风格字符串,结尾有\0 char mch[] = mchars; string str(ch); //string类的构造函数接收ch,并作转化 i = strcmp(ch,str); //error,有人喜欢把string类作参数输入到strcmp等C字符串函数里,肯定会出问题啊. ch[0] =

文档评论(0)

dyn593 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档