随笔分类 - C/C++
夯实基础,打牢根基
摘要:文件1:A.h#include "B.h"class B;class A{ B b;};文件2:B.h#include "A.h"class A;class B{ A a;};问题:编译无法通过。原因:执行#include "A.h"时,包含了B.h,包含B.h,又包含了A.h,循环嵌套包含。解决办法: 方法1, 将class A 与class B的声明放在同一个文件中,去掉#include "A.h"与#include "B.h". 方法2,去掉#include "A.h",避免循环嵌套.
阅读全文
摘要:单链表的逆置的实现:(1)算法structlink{intdata;structlink*next;};linkreverse(linkx){if(NULL==x)returnNULL;linkt=NULL;linkr=NULL,y=x;//(0)while(y!=NULL){t=y->next;//(1)y->next=r;//(2)r=y;//(3)y=t;//(4)}return...
阅读全文
摘要:如果函数返回值是一个对象,要考虑 return 语句的效率。例如 return String(s1 + s2); 这是临时对象的语法,表示“创建一个临时对象并返回它” 。不要以为它与“先创建一个局部对象 temp 并返回它的结果”是等价的,如 String temp(s1 + s2); return temp; 实质不然,上述代码将发生三件事。首先...
阅读全文
摘要:格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error! 注意事项:(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁...
阅读全文
摘要:看看下面的程序的输出: #include <stdio.h> char *returnStr() { char *p="hello world!"; return p; } int main() { char *str; str=returnStr(); printf("%s\n", str); return 0; } 这个没有任何问题,因为"hello world!"是一...
阅读全文
摘要:题记: 关于指针,推荐看一下csdn飞天御剑流的《再再论指针》,相信对C语言指针会有一个更为清晰全面的理解。 指针是C语言的精华,它是一柄“双刃剑”,用的好与坏就看使用者的功力了。下面就一道面试题,看一下指针与数组的区别。 char *p1, *p2;char ch[12];char **pp;p1 = ch;pp = &ch;p2 = *pp;问p1和p2是...
阅读全文
摘要:所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。一、<iostream>与<iostream.h>的区别<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码...
阅读全文
摘要:虽然看过C++方面不少的资料,但我现在仍然是一个初学者,编过C++的一些程序,但不多。const修饰词做为C++一个重要的概念,务必要弄清楚才行,看到网上一个C++学习者的博客上归纳的很不错,很精炼。以下是参考的链结:htmlhttp://www.cppblog.com/seuauto/archive/2008/09/04/60941.htmlconst是C++的关键字之一,与其他的关键字相比,C...
阅读全文
摘要:刚刚看了一篇也是关于typedef用法的文章,跟先前看的那篇文章内容大同小异,不过有一处让我收获不小,就是在上篇最后那个案例我不理解的地方,这篇文章给了一个很好的答案。以下是文章的部分内容 :陷阱一: 记住,typedef是定义了一种类型的新别名,不同于宏,它不是简单的字符串替换。比如: 先定义: typedefchar*PSTR; 然后: intmystrcmp(constPSTR,constP...
阅读全文
摘要:不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别名,而不只是简单...
阅读全文