![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C常用备查
文章平均质量分 60
Yerasel
偷来梨蕊三分白,借得梅花一缕魂
展开
-
JNI编程:java 调用c++动态链接库
http://hi.baidu.com/08wschen/blog/item/27a298fcc86f6c3b5c6008ca.htmlJNI其实是Java Native Interface的简称,也就是java本地接口。它提供了若干的API实现了和Java和其他语言的通信(主要是C&C++)。也许不少人觉得Java已经足够强大,为什么要需要JNI这种东西呢?我们知道Java是一种转载 2012-01-10 20:34:34 · 653 阅读 · 0 评论 -
类型转换 float变量int方式读取
代码如下:float a = 1.5f;cout << (int)a << endl; // 损失精度,类型转换cout << &a << endl; // a的地址0xcout << *(int*)(&a) << endl; // 整数存储方式读取float a *(int*)(&a) = (int&)acout 运行结果如下:原创 2012-09-14 16:44:43 · 1004 阅读 · 0 评论 -
快速排序
#include using namespace std;int a[50];int Partion(int begin, int end){ int compare=a[begin], left =begin,right = end; if(left >right) return -1; while (left <right) {原创 2012-10-17 17:44:38 · 579 阅读 · 0 评论 -
STL copy()函数用法
闲言少叙,上代码:#include #include #include using namespace std;int main (){ int src[]= {1, 2, 3, 4, 5, 6, 7}; // vector srcVec; // srcVec.resize(7); 或者 vector srcVec(src, src + 7); //原创 2012-12-03 14:53:13 · 16459 阅读 · 0 评论 -
STL binder1st binder2nd bind1st bind2nd区别
binder**和bind**功能对应。只是binder**是类绑定器,bind**为全局函数绑定器而已。1st和2nd很好理解。一个是第一个参数不变,一个是第二个参数不变。参看程序:#include "stdafx.h"#include #include // count_if#include // binder#include using namespace st原创 2012-12-03 17:47:59 · 2930 阅读 · 1 评论 -
前缀++ 后缀++ 运算符重载
下面例子程序中 const Fraction operator ++(int) 中 int不过是个哑元(dummy),是永远用不上的 它只是用来判断++是prefix 还是 postfix 记住,如果有哑元,则是postfix,否则,就是prefix 就像其他的一元算法和逻辑运算一样 而其实在C++中用到这种哑元的也只有在转载 2012-12-06 10:38:06 · 5827 阅读 · 0 评论 -
i++不能为左值的原因
(1)首先说左值和右值的定义:变量和文字常量都有存储区,并且有相关的类型。区别在于变量是可寻址的(addressable)对于每一个变量都有两个值与其相联:1).它的数据值,存储在某个内存地址中。有时这个值也被称为对象的右值(rvalue,读做are-value).我们也可认为右值的意思是被读取的值(read value)。文字常量和变量都可 被用作右值。2).它的地址值——转载 2013-01-01 22:38:25 · 799 阅读 · 0 评论 -
sizeof()用法,double对位域计算的影响
sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以""为结束判断,不计算为''的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。转载 2013-01-28 12:42:56 · 1210 阅读 · 0 评论 -
宏定义交换参数
我们都知道交换int数值需要传引用或者指针,但是用宏定义也是可以的。这是为什么呢?我们举例如下:#include using namespace std;#define swapdata3(a, b, type) {type temp;temp=(a);(a)=(b);(b)=temp;}int main(){ double a,b; while(cin>>a原创 2013-03-09 17:35:23 · 2012 阅读 · 0 评论 -
C++缓冲区溢出
gets(char* ) 根本不执行边界检查,它会向缓冲区连续写入,其危险级别可以说是近乎C/C++中最高。遇到 EOF 字符或换行字符之前,不会停止读入文本,这还都不算什么,这个函数最可怕的一点是会写出堆溢出;作为一个替代方法,可以使用方法 fgets()。它可以做与 gets() 所做的同样的事情,但它接受用来限制读入字符数目的大小参数,因此,提供了一种防止缓冲区溢出的方法。一原创 2013-03-09 21:09:34 · 4485 阅读 · 1 评论 -
数组和指针参数是如何被编译器修改的
“数组名被改写成一个指针参数”规则并不是递归定义的。数组的数组会被改写成“数组的指针”,而不是“指针的指针”: 实参 所匹配的形参数组的数组 char c[8][10]; char (*)[10];转载 2014-03-10 23:05:39 · 1057 阅读 · 0 评论 -
[转载]堆和栈的区别
不知道谁写的,很详细,对了解程序数据存储有一定帮助,转载过来自己学习同时与众分享。一、预备知识―程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意转载 2014-03-10 23:11:07 · 623 阅读 · 0 评论 -
模板的声明和实现
通过显式的模板实例化得到类型。将所有的显式实例化过程安放在另外的文件中。在本例中,可以创建一个新文件templateinstantiations.cpp:// array.h#ifndef MYARRAY_H#define MYARRAY_Htemplate class Myarray{ T data_[SIZE]; Myarray (const Myarray& o原创 2012-09-07 13:11:28 · 682 阅读 · 0 评论 -
函数对象举例
调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。示例程序:#include#include#include#includeusing namespace std;class Sum {int原创 2012-09-07 12:39:59 · 529 阅读 · 0 评论 -
程序计时
很简单,总忘,这里记录一下#include clock_t start= clock(); ... clock_t end = clock(); float elapse = (float)(end - start ) / CLOCKS_PER_SEC;请注意:linux下的CLOCKS_PER_SEC是1000000Windows下这个数是1000原创 2011-12-15 09:42:35 · 559 阅读 · 0 评论 -
cin cin.get cin.getline有什么区别?(转载加部分原创)
http://blog.csdn.net/lyac2006/article/details/1565556 cincin.get()的结束符只有enter,但会把enter放入队列等待cin.getline()的结束符也只有enter,但不会把enter放入队列如果用cin>>…做过输入,在使用cin.getline之前,需要处理一下。处理的方法很多,你可以在cin>>…的输入转载 2011-12-11 17:07:36 · 1469 阅读 · 0 评论 -
get( )与getline( )区别
http://www.cnblogs.com/qlwy/archive/2011/11/03/2235126.htmlget与getline区别不是很大,但一个明显的区别是get遇到 '\n '字符后便返回,这是 '\n '还在缓冲区中,所以下次读出来的将是 '\n ',而getline遇到 '\n '也返回,但它会把 '\n '从缓冲区里移除掉 所以很多时候用getline方便些转载 2012-01-11 20:08:08 · 546 阅读 · 0 评论 -
动态生成二维数组
int x,y; scanf("%d%d",&x,&y); int** a=new int* [x]; for(int i=0; i<x; i++) { a[i]=new int[y]; } for(int i=0; i<x; i++) for(int j=0; j<y; j++) a[i][j原创 2012-04-24 08:59:58 · 924 阅读 · 0 评论 -
Placement New 实现自Effective C++ Item4
#include using namespace std;class EquipmentPiece{public: EquipmentPiece(int IDNumber) { this->IDNumber = IDNumber; } void PrintOut() { cout << IDNumber << end原创 2012-06-01 13:43:54 · 467 阅读 · 0 评论 -
Placement New实现自More Effective C++ Item4
#include using namespace std;class EquipmentPiece{public: EquipmentPiece(int IDNumber) { this->IDNumber = IDNumber; } void PrintOut() { cout << IDNumber << end原创 2020-03-15 19:49:37 · 306 阅读 · 0 评论 -
more effective c++ Item M4 书上写的代理类实现不了,需要修改一下哟
more effective c++ Item M4书上原文如下class Array { public: class ArraySize { // 这个类是新的 public: ArraySize(int numElements): theSize(numElements) {} int size() const原创 2012-06-05 20:43:15 · 540 阅读 · 0 评论 -
STL Vector remove()和erase()的使用
STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除。若要真正移除,需要搭配使用erase()。例子如下:// remove.cpp// compile with: /EHsc// Illustrates how to use the remove function.//// Functions:// remove - remove al原创 2012-07-19 09:14:46 · 18303 阅读 · 3 评论 -
Determining the Size of a Class Object
http://www.cprogramming.com/tutorial/size_of_class_object.htmlDetermining the Size of a Class ObjectBy Girish ShettyThere are many factors that decide the size of an object of a class in C++转载 2012-08-13 17:47:59 · 746 阅读 · 0 评论 -
不同编译器下虚继承层次的对象的内存布局 8, 20, 32
#includeusing namespace std;class A{ char k[3];public: virtual void aa() {};};class B:virtual public A{ char j[3];public: virtual void bb() {};};class C:virtual public B原创 2012-08-13 19:20:21 · 817 阅读 · 0 评论 -
检测大端小端
// LIttle Endian返回1int check(){ union w { int a; char b; }c; c.a = 1; return (c.b ==1);}或者: short x = 0x1122; char x0 = ((char *)&x)[0]; if (x0 =原创 2012-07-29 21:38:00 · 1343 阅读 · 0 评论 -
大端模式、小端模式
本机测试如下:原创 2014-03-10 22:04:00 · 817 阅读 · 0 评论