C/C++
胖次在哪里
这个作者很懒,什么都没留下…
展开
-
c++静态成员小结,c++,static
<br />类中的静态成员真是个让人爱恨交加的特性。我曾经在面试时,被主考官抓住这个问题一阵穷追猛打,直把我问的面红耳赤,败下阵来。所以回来之后,我痛定思痛,决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 <br />静态类成员包括静态数据成员和静态函数成员两部分。 <br /><br />一 静态数据成员: <br /><br />类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/pr转载 2010-12-22 11:21:00 · 339 阅读 · 0 评论 -
真值 机器码 原码 反码 补码
在计算机中,数都是以补码的形式存在,运算也都是以补码进行运算。补码有两个优点:一个是能够计算减法,另外一个就是统一正零和负零。 二进制数与十进制数一样有正负之分。在计算机中,常采用数的符号和数值一起编码的方法来表示数据。常用的有原码、反码、补码、移码等。这几种表示法都将数据的符号数码化。为了区分一般书写时表示的数和机器中编码表示的数,我们称前者为真值,后者为机器数或机器码。原创 2012-02-10 11:42:25 · 6448 阅读 · 0 评论 -
c/c++和java中关于char的长度问题
c/c++中为ascii编码,char长度为1字节,取值范围 -128java中为unicode编码,char长度为2字节,取值范围 0java中的基本类型为固定长度,是java可以跨平台的原因之一整数默认类型为int,若需定义为long,则要在数字后面加L;浮点树默认类型为double,若需定义为float,则要在数字后面加F;float可精确到7为有效数字,doub原创 2012-02-08 13:55:05 · 2481 阅读 · 0 评论 -
const(C++) vs final(java)
In C++ marking a member function const means it may be called on const instances. Java does not have an equivalent to this. E.g.:class Foo {public: void bar(); void foo() const;};void te转载 2012-02-06 17:49:51 · 603 阅读 · 0 评论 -
比较c++中的值传递,引用传递,指针传递
从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数转载 2012-02-06 18:35:17 · 642 阅读 · 0 评论 -
编程大小写敏感小结
敏感: 语言:C、C++、Java,C#,smalltalk,javascript,corba,xml,xsl OS:Linux/Unix 不敏感: 语言:VB,VBScript,HTML,Pascal(delphi),sql,foxpro,cobol OS:Windows/DOS数据库是否敏感是根据安装的时候设定,sysbase 默认是敏感,s原创 2012-02-06 14:07:58 · 1208 阅读 · 0 评论 -
cdecl、stdcall、fastcall、declspec 的用法和区别
首先这三个修饰符是c和c++调用约定 调用约定(Calling convention)决定以下内容:函数参数的压栈顺序,由调用者还是被调用者把参数弹出栈,以及产生函数修饰名的方法。MFC支持以下调用约定: __cdecl,__stdcal和__fastcalll都是函数调用规范,规定了参数出入栈的顺序和方法,如果只用VC编程的话可以不用关心,但是要在C++和Pasc转载 2011-11-04 13:23:43 · 500 阅读 · 0 评论 -
SQLite 函数大全
http://laolang.xtmm.cn/tb.php?sc=6e7430&id=14472abs(X) 返回参数X的绝对值。 coalesce(X,Y,...) 返回第一个非空参数的副本。若所有的参数均为NULL,返回NULL。至少2个参数。转载 2011-09-07 12:33:07 · 1840 阅读 · 0 评论 -
sizeof和strlen
http://blog.csdn.net/cxyol/article/details/573524先看看sizeof()一、sizeof的概念sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节转载 2011-09-06 17:51:16 · 416 阅读 · 0 评论 -
C小结
预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例转载 2011-07-20 14:39:42 · 429 阅读 · 0 评论 -
c位域
位域有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二转载 2011-07-05 17:51:30 · 356 阅读 · 0 评论 -
C语言:内存字节对齐详解
一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个转载 2011-07-05 17:53:15 · 379 阅读 · 0 评论 -
总结
C++中使用const定义常量,而不使用宏常量:宏常量没有数据类型检查;有些IDE调试工具可以对const进行调试,但不能对宏常量进行调试。const常量作用域为对象的生存周期若要建立在整个类中都恒定的常量则应该用枚举常量来实现。但枚举常量的缺点是它的隐含数据类型是整型,最大值有限,且不能表示浮点数。由于类中const常量的生存周期为对象的生存周期,因此不能在对象未被创建时对const进行赋值,const数据成员的初始化只能在类的构造函数初始化列表中进行。函数参数和返回值传递方式:值传递、指针(地址)传递、原创 2011-02-24 11:17:00 · 529 阅读 · 0 评论 -
C++内存分配秘籍—new,malloc,GlobalAlloc详解
<br /><br />一。关于内存<br /> 1、内存分配方式<br /> 内存分配方式有三种:<br /> (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在<br />。例如全局变量,static变量。<br /> (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存<br />储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。<br /> (3) 从堆上分配,亦称动转载 2011-01-18 13:51:00 · 396 阅读 · 0 评论 -
深入C++的new
<br /><br />“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A<br />{<br /> int i;<br />public:<br /> A(int _i)转载 2011-01-18 13:52:00 · 404 阅读 · 0 评论 -
__stdcall
<br />__stdcall是函数调用约定的一种,函数调用约定主要约束了两件事: <br /> 1.参数传递顺序 <br /> 2.调用堆栈由谁(调用函数或被调用函数)清理 <br /> 常见的函数调用约定:stdcall cdecl fastcall thiscall naked call <br /> __stdcall表示 <br /> 1.参数从右向左压入堆栈 <br /> 2.函数被调用者修改堆栈 <br /> 3.函数名(在编译器这个层次)自动加前导的下划线,后面紧跟一个@符号,转载 2010-11-04 16:02:00 · 491 阅读 · 0 评论 -
明晰C++内存分配的五种方法的区别
<br /> 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 <br /><br /> 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 <br /><br /> 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 <br /><br /> 自由存储区,就是那些由m转载 2010-11-04 09:54:00 · 388 阅读 · 0 评论 -
控制C++的内存分配
<br />在嵌入式系统中使用C++的一个常见问题是内存分配,即对new 和 delete 操作符的失控。 <br /> 具有讽刺意味的是,问题的根源却是C++对内存的管理非常的容易而且安全。具体地说,当一个对象被消除时,它的析构函数能够安全的释放所分配的内存。 <br /> 这当然是个好事情,但是这种使用的简单性使得程序员们过度使用new 和 delete,而不注意在嵌入式C++环境中的因果关系。并且,在嵌入式系统中,由于内存的限制,频繁的动态分配不定大小的内存会引起很大的问题以及堆破碎的风险。<br转载 2010-11-04 09:56:00 · 384 阅读 · 0 评论 -
typedef
1.常规变量类型定义例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义 uchar c声明等于unsigned char c声明2.数组类型定义例如: typedef int array[2];描述: array等价于 int [2]定义; array a声明等价于int a[2]转载 2013-06-04 14:47:29 · 830 阅读 · 0 评论