C/C++
挣扎中前行
这个作者很懒,什么都没留下…
展开
-
C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明转载 2012-03-06 18:14:23 · 511 阅读 · 0 评论 -
C++ 语言学习错误集合
1. 错误:expected unqualified-id before ‘using’ 其实就是类声明后面没有加分号导致的。类声明的时候没有加分号,还可能导致一个错误错误:一个声明指定了多个类型解决办法:分别检查包含进来的文件,类声明,结构体声明后面有没有加分号。2. 重载运算符using std::ostream;3. C++容器迭代器即其引用#inc原创 2012-09-29 10:07:24 · 7054 阅读 · 0 评论 -
指针数组和数组指针
起因:二维数组做为实参,由于自己基础不是很好颇费周折,写下备忘一下。数组在传入函数的时候会退化成指针。一维数组就直接退化成指针,二维数组退化成一个指向一维数组的指针,如char (*)[32]可选方式:char a[ ][ ];func(char b[ ], int rows, int cols);func(char (*b)[ ] );指针原创 2013-03-07 14:24:19 · 969 阅读 · 0 评论 -
可重入函数和不可重入函数
可重入函数也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,所以不会互相干扰。如果确实需要访问全局变量(包括static),一定要注意实施互斥手段。可重入函数在并行运行环境中非常重要,但是一般要为访转载 2013-04-15 13:04:42 · 1141 阅读 · 0 评论 -
回调函数
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。1.同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;2.回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;3.异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客转载 2013-04-15 13:40:01 · 843 阅读 · 0 评论 -
字符串Hash函数评估
Hash查找因为其O(1)的查找性能而著称,被对查找性能要求高的应用所广泛采用。它的基本思想是:(1) 创建一个定长的线性Hash表,一般可以初始化时指定length;(2) 设计Hash函数,将关键字key散射到Hash表中。其中hash函数设计是最为关键的,均匀分布、冲突概率小全在它;(3) 通常采用拉链方法来解决hash冲突问题,即散射到同一个hash表项的关键字,以链表形式来表转载 2013-10-09 14:31:13 · 827 阅读 · 0 评论 -
C++与Java比较之向上转型
前几天看Mars老师的视频教程,里面有这样一句“一个引用能调用那些成员属性(变量和函数),取决于引用的类型;调用的方法取决于引用所指向的对象。(向上转型)”今天在使用C++的upcast时感觉不对啊?网上搜了下原来Java和C++的向上转型的机制不同。C++向上转型使用静态邦定,所以在无法识别类类型引用或指针调用对应类的成员函数方法。c++示例:class Ba原创 2013-11-21 16:35:22 · 1916 阅读 · 2 评论 -
C++中类不能定义自身类的对象,Java表面可以
这个牵扯到类的声明与定义。定义类时候,遇到右花括号结束,并且一旦定义了类,那我们就知道了所有的类成员,以及存储该类的对象所需要的存储空间。C++可以声明一个类而不去定义它,例如: class Screen; 它只是在程序中引入了类类型,在声明之后定义之前,它是一个不完全类型。不完全类型只能以有限的方式使用,不能定义该类型的对象,只能用于定义指向该类型的指针及引用,或用于声明(而不是定义)使用转载 2014-11-13 11:20:05 · 962 阅读 · 0 评论 -
Java语言和C++语言的差异
Java采用了C及C++的语法格式,对于学习过C及C++的程序设计者来说,学习Java将有可能很轻松。但是,如果仔细检查Java语言的许多细节,就会发现Java取消了不少C及C++的特性,并且加入了一些新的特性。这些差异包括: o 不再有指针(Pointer)的概念。 这是Java和C/C++在语法上的主要区别之一。在C及C转载 2014-11-20 14:34:22 · 659 阅读 · 0 评论