随笔分类 -  C/C++重要知识点

上一页 1 2 3 下一页
C++中引用的本质是什么?
摘要:一般的教材上讲到引用时,都是说“引用是对象的一个别名”。我认为这种定义是不清晰的,不利于初学者理解引用。至少我自己曾经被这个定义困扰了一段时间。到底什么是“别名”? 实际上,引用的实质是位于xxxxxx地址上的一个xxxx类型的对象。比如教科书上常用的例子: int a = 5; //不妨假设编译器将a分配到0x400000 int &b = a; 这里面b的准确意义就是,放在0x400000地址上的一个int类型对象。这里面包括了两重含义,首先b是一个int类型对象,因此他的使用完全与 int类型对象一样。另外这个int类型对象的地址是0x400000,因此从底层来看,它具有指针的一 阅读全文
posted @ 2013-08-10 15:55 猿人谷 阅读(4441) 评论(0) 推荐(1) 编辑
C++拷贝构造函数
摘要:拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。调用拷贝构造函数的情形在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):1) 一个对象作为函数参数,以值传递的方式传入函数体;2) 一个对象作为函数返回值,以值传递的方式从函数返回;3) 一个对象用于给另外一个对象进行初始化(常称为复制初始化); 如果在前两. 阅读全文
posted @ 2013-08-10 14:58 猿人谷 阅读(2327) 评论(0) 推荐(0) 编辑
C++重要知识点小结---1
摘要:1.C++中类与结构的唯一区别是:类(class)定义中默认情况下的成员是private的,而结构(struct)定义中默认情况下的成员是public的。2. ::叫作用域区分符,指明一个函数属于哪个类或一个数据属于哪个类。::可以不跟类名,表示全局数据或全局函数(即非成员函数)。3.类名加载成员函数名之前而不是加在函数的返回类型前。错误:Tdate::void Set(int m , int d , int y) {}正确: void Tdate::Set(int m , int d , int y) {}4.一个类对象所占据的内存空间由它的数据成员所占据的空间总和所决定。类的成员函数不占据 阅读全文
posted @ 2013-08-08 20:57 猿人谷 阅读(19813) 评论(0) 推荐(2) 编辑
C/C++面试小知识点
摘要:1.static有什么用途。解答:在函数体中,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。也就是说,这个函数被限制在声明它的模块的本地范围内使用。2.引用与指针有什么区别?解答:引用必须被初始化,指针不必。引用初始化后不能被改变,指针可以改变所指的对象。不存在指向空值的引用,但是存在指向空值的指针。3.写出float x与“零值”比较的if语句。if(x > 0.000001 & 阅读全文
posted @ 2013-08-06 18:59 猿人谷 阅读(1123) 评论(0) 推荐(1) 编辑
C语言内存地址基础
摘要:来源:http://blog.jobbole.com/44845/从计算机内存的角度思考C语言中的一切东东,是挺有帮助的。我们可以把计算机内存想象成一个字节数组,内存中每一个地址表示 1 字节。比方说我们的电脑有 4K 内存,那这个内存数组将会有 4096 个元素。当我们谈论一个存储地址的指针时,就当相于我们在谈论一个存储着该内存数组某个元素索引的指针。逆向引用某个指针,将会得到数组中该索引所指向的 值。这一切当然都是谎言。操作系统对内存的管理要远比这复杂。内存不一定连续,也不一定按顺序处理。但前面的类比是一种讨论C语言内存的简单方式。如果对『指针』、『地址』和『逆向引用』感到混乱,请看《C语 阅读全文
posted @ 2013-08-06 18:39 猿人谷 阅读(3453) 评论(0) 推荐(0) 编辑
C语言函数指针基础
摘要:来源:http://blog.jobbole.com/44639/本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础。如果你不讨厌事无巨细,请尽情阅读吧。函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具。本文将从C语言函数指针的基础开始介绍,再结合一些简单的用法和关于函数名称和地址的趣闻。在最后,本文给出一种简单的方式来看待函数指针,让你对其用法有一个更清晰的理解。函数指针和一个简单的函数我们从一个非常简单的”Hello World“函数入手,来见识一下怎样创建一个函数指针。1234567891011121314#include // 函数原型 阅读全文
posted @ 2013-08-06 18:37 猿人谷 阅读(1426) 评论(0) 推荐(0) 编辑
转载:C语言的谜题
摘要:转载:http://coolshell.cn/articles/945.html这几天,本站推出了几篇关于C语言的很多文章如下所示:语言的歧义 [酷壳链接] [CSDN链接]谁说C语言很简单? [酷壳链接] [CSDN链接]6个变态的C语言Hello World程序 [酷壳链接] [CSDN链接]如何加密/弄乱C源代码 [酷壳链接] [CSDN链接]C语言的谜题 [酷壳链接] [CSDN链接]我们可以看到很多C语言相关的一些东西。比如《语言的歧义》主要告诉了大家C语言中你意想不到的错误以及一些歧义上的东西。而《谁说C语言很简单》 则通过一些看似你从来不可能写出的代码来告诉大家C语言并不是一件容 阅读全文
posted @ 2013-08-03 18:38 猿人谷 阅读(323) 评论(0) 推荐(0) 编辑
转载:如何迅速秒杀掉海量数据处理面试题
摘要:转自:http://blog.csdn.net/v_july_v/article/details/7382693教你如何迅速秒杀掉:99%的海量数据处理面试题作者:July出处:结构之法算法之道blog前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。 毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题。最后,有一点必须强. 阅读全文
posted @ 2013-08-02 09:04 猿人谷 阅读(665) 评论(0) 推荐(0) 编辑
转载:C++ 虚函数表解析
摘要:目录(?)[+]转载:http://blog.csdn.net/haoel/article/details/1948051#前言C++中 的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术 可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现 阅读全文
posted @ 2013-07-19 10:19 猿人谷 阅读(474) 评论(0) 推荐(0) 编辑
浅淡C/C++中的typedef和#define
摘要:在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏 定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C/C++的宏定义命令,typedef 用来为一个已有的数据类型起一个别名,而#define是用来定义一个宏定义常量。下面谈谈两者在实际使用中应当注意的地方。1.typedef关键字 typedef是用来声明类型别名的,在实际编写代码过程使用typedef往往是为了增加代码的可读性。它可以为一串很长的类型名起一个别名,那么使用这个别名可以达到与原类型名相同的效果。 如:typedef int INT;typ 阅读全文
posted @ 2013-07-18 20:24 猿人谷 阅读(5577) 评论(0) 推荐(0) 编辑
浅淡数组和指针
摘要:谢谢大牛的分享,看完后让我对数组与指针有了更深刻的理解,在此谢过!转载:http://www.cnblogs.com/dolphin0520/archive/2011/11/09/2242138.html http://www.cnblogs.com/dolphin0520/archive/2011... 阅读全文
posted @ 2013-07-18 19:46 猿人谷 阅读(790) 评论(0) 推荐(0) 编辑
static用法详解
摘要:一. 面向过程程序设计1、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: [cpp] view plaincopy//Example1 #include voidfn(); staticintn;//定义静态全局变量 voidmain() {n=20; cout voidfn(); staticintn;//定义静态全局变量 voidmain() {n=20; cout externintn; voidfn() {n++; cout voidfn(); voidmain() ... 阅读全文
posted @ 2013-07-18 16:07 猿人谷 阅读(22646) 评论(0) 推荐(0) 编辑
结构体、共用体
摘要:1 #include 2 union 3 { 4 int i; 5 char x[2]; 6 }a; 7 8 void main() 9 { 10 a.x[0] = 10; 11 a.x[1] = 1; 12 printf("%d",a.i); 13 } 14 答案:266 15 16 x86的机器,小端字节序, 17 x[0]=0x0a x[1] = 0x01 18 19 则i就是0x0000010a 20 21 结果就是266. 共用体和结构体的区别在于:结构体的每个域都有它自己的存储空间;共用体所有域共用一个存储空间。... 阅读全文
posted @ 2013-07-18 10:45 猿人谷 阅读(782) 评论(0) 推荐(0) 编辑
strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数
摘要:strcpy函数:[cpp] view plaincopychar*strcpy(char*Dest,constchar*Src){assert((Dest!=NULL)&&(Src!=NULL));char*address=Dest;while((*Dest++=*Src++)!='\0')NULL;returnaddress;}strncpy函数:利用标准库函数strncpy(),可以将一字符串的一部分拷贝到另一个字符串中。strncpy()函数有3个参数:第一个参数是目录字符串;第二个参数是源字符串;第三个参数是一个整数,代表要从源字符串拷贝到目标字符串中 阅读全文
posted @ 2013-07-17 21:40 猿人谷 阅读(11396) 评论(0) 推荐(0) 编辑
memmove函数
摘要:写一个函数,完成内存之间的拷贝[cpp] view plaincopyvoid*mymemcpy(void*dest,constvoid*src,size_tcount){char*pdest=static_cast(dest);constchar*psrc=static_cast(src);if(pdest>psrc&&pdest 功能:由src所指内存区域复制count个字节到dest所指内存区域。 说明:src和dest所指内存区域可以重叠,但复制后src内容会被更改。函数返回指向dest的指针。 memmove和memcpy的区别:1.memmove函数原型:vo 阅读全文
posted @ 2013-07-17 20:53 猿人谷 阅读(12369) 评论(0) 推荐(0) 编辑
strcpy函数和strncpy函数的区别
摘要:strcpy函数和strncpy函数的原型介绍在我的另一篇文章中介绍了,见strcpy,strncpy,strlen等函数原型strcpy:字串复制 原型:char *strcpy(char *dest, char *src); 功能:把src所指由'\0'结束的字符串复制到dest所指的数组中。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 注意:当src串长度>dest串长度时,程序仍会将整个src串复制到dest区域,可是dest数组已发生溢出。 因此会导致dest栈空间溢出以致产生崩溃异常。 阅读全文
posted @ 2013-07-17 20:50 猿人谷 阅读(3282) 评论(0) 推荐(1) 编辑
strcpy函数
摘要:1 #include 2 #include 5 void myStrcpy(char* Dest, const char *Src) 6 { 7 assert((Dest!= NULL)&&(Src!=NULL)); 8 while((*Dest = *Src)!='\0') 9 {10 Dest++;11 Src++;12 }13 }14 15 int main()16 {17 char dest[] = "helloworld";//注意18 char* src = "hello";19 mySt... 阅读全文
posted @ 2013-05-07 16:15 猿人谷 阅读(426) 评论(0) 推荐(0) 编辑
C++重点知识
摘要:来源:http://www.cnblogs.com/lzjsky/archive/2011/01/18/1938507.html2. 什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对引用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完 毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引 用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引 阅读全文
posted @ 2013-04-25 14:43 猿人谷 阅读(680) 评论(0) 推荐(0) 编辑
static面试
摘要:面试题:static有什么作用?答:在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数一、 定义全局静态变量 :在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点:(1) 在全局数据区内分配内存(2) 如果没有初始化,其默认值为0(3) 该变量在本文件内从定义开始到文件结束可见二、 定义局部静态变量:在局部静态变量前面加上关键字static,该局部变量便成了静态局部变量。静态局部变量有以下特点:(1) 该变量在全局数据区分配内存(2) 如果不显示初始化,那么将被隐式初始化为0(3) 它始终驻留在全局数据区,直到程序运... 阅读全文
posted @ 2012-12-13 21:13 猿人谷 阅读(687) 评论(0) 推荐(0) 编辑
内存泄露
摘要:1.简介 在计算机科学中,内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏与许多其他问题有着相似的症状,并且通常情况下只能由那些可以获得程序源代码的程序员才可以分析出来。然而,有不少人习惯于把任何不需要的内存使用的增加描述为内存泄漏,严格意义上来说这是不准确的。 一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。应用程... 阅读全文
posted @ 2012-12-13 11:29 猿人谷 阅读(374) 评论(0) 推荐(0) 编辑

上一页 1 2 3 下一页