随笔分类 -  JAVA&C++

1 2 下一页
JAVA classpath jar问题[zz]
摘要:classpath问题可以说是所有初学者头疼的问题,偶也一样。1)classpath的作用:它的作用就事让java找到你所要执行,或你拥有的类。2)classpath的设置:设置classpath,一般可以在2个地方进行,一是系统环境,如Windows98中autoexec.bat文件中,每次开机自... 阅读全文
posted @ 2014-09-21 00:48 york_hust 阅读(1686) 评论(0) 推荐(1)
char* char [] 区别[zz]
摘要:程序运行时,在内存中是分段的:有数据段,程序段,只读数据段等等。1, char buf[]=”Golden Global View”; // 这个会把”Golden Global View”放在可读可写的数据段。2, char* buf =" Golden Global View“; // 这个会把它放在 只读数据段,也就是说 buf是不可写的,所以任何对buf的写操作都是错误的。 阅读全文
posted @ 2012-12-04 17:25 york_hust 阅读(217) 评论(0) 推荐(0)
堆和栈&值类型和引用类型&装箱与拆箱[zz]
摘要:当你声明一个变量时内存中都发生了什么? 当你在一个.Net应用程序中声明一个变量时,首先要分配一些内存快到RAM,它包括三样东西,第一个是变量名,第二个是变量的数据类型,最后一个是变量的值。 这只是一个很简单的解释,根据变量的数据类型不同,有两种内存分配类型:堆栈内存和堆内存。图2 声明变量后的内存结构 堆栈(stack)和堆(heap) 为了帮助理解堆栈和堆,让我们了解下面的代码内部究竟发生了什么。publicvoid Method1(){//Line1inti=4;//Line2inty=2;//Line3class1 cls1=newclass1();} 这个方法内部只有三行代... 阅读全文
posted @ 2012-09-12 21:19 york_hust 阅读(589) 评论(2) 推荐(0)
malloc创建大小不定的数组
摘要:在类中定义不定大小数组的方法class A { public: A(int num); private: int* aa; int** aaa;}这样aa就是一个int型的数组, aaa就是一个int*型的数组.在构造函数中应该这样分配空间A::A(int num) { aa = (int*)malloc(sizeof(int)*num); aaa = (int**)malloc(sizeof(int*)*num);}这样就定义了两个数组aa[num],和aaa[num]; 阅读全文
posted @ 2012-09-01 15:56 york_hust 阅读(1180) 评论(0) 推荐(0)
malloc和new的区别[zz]
摘要:malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。内存泄漏对于malloc或者n 阅读全文
posted @ 2012-09-01 15:31 york_hust 阅读(356) 评论(0) 推荐(0)
堆,栈,new/delete/malloc/free[zz]
摘要:1.内存分配方式内存分配方式有三种:[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存程序的整个运行期间都存在。例如全局变量,static变量。[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。[3]从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活,但如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内 阅读全文
posted @ 2012-08-30 10:53 york_hust 阅读(414) 评论(0) 推荐(0)
C++中的析构函数与delete
摘要:1.delete只可以释放由new动态申请的堆区的空间,不可以释放在栈区的空间,是的2.而析构函数只会自动释放系统自己管理的栈区的空间,不会释放由new分配的空间析构函数只负责销毁对象,不负责栈空间的管理 阅读全文
posted @ 2012-08-28 17:34 york_hust 阅读(3094) 评论(0) 推荐(0)
抽象类和接口的区别与使用[zz]
摘要:一、抽象类:抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。二、接口:接口是引用类型的,类似于类,和抽象类的相似之处有三点:1、不能实例化;2、包含未实现的方法声明;3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);另外,接口有如下特性:接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为 阅读全文
posted @ 2012-08-26 16:55 york_hust 阅读(262) 评论(0) 推荐(0)
引用和指针的区别[zz]
摘要:(1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针.由于C++ 要求 reference 总是指向一个对象所以 reference要求有初值.String & rs = string1;由于没有所谓的 null reference 所以所以在使用前不需要进行测试其是否有值.,而使用指针则需要测试其的有效性.(2)指针可以被重新赋值而reference则总是指向最初或地的对象.(3)必须使用reference的场合. Operator[] 操作符 由于该操作符很特别地必须返回 [能够被当做assignment 阅读全文
posted @ 2012-07-12 10:14 york_hust 阅读(229) 评论(0) 推荐(0)
C/C++中extern关键字详解[zz]
摘要:1基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$也可能是别的,这要看编译器的"脾气"了 阅读全文
posted @ 2012-07-02 11:35 york_hust 阅读(347) 评论(0) 推荐(0)
getopt[zz]
摘要:getopt被用来解析命令行选项参数。#include <unistd.h> extern char *optarg; //选项的参数指针 extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。 extern int opterr, //当opterr=0时,getopt不向stderr输出错误信息。 extern int optopt; //当命令行选项字符不包括在optstring中或者选项缺少必要的参数时,该选项存储在optopt 中,getopt返回'?’、 int... 阅读全文
posted @ 2012-06-19 17:39 york_hust 阅读(172) 评论(0) 推荐(0)
Linux: fd_set和select()[zz]
摘要:select()机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fe_set的内容,由此来通知执行了select()的进程哪一socket或文件可读。 多端口复用函数select在调用前要首先设置监听的端口数目,FD_ZERO是清空端口集,FD_SET是设置端口集。select()函数常常用在用一个进程监听多个服务器端socket。有时,select()也被当作延时函数使用。sleep()延时会释 阅读全文
posted @ 2012-06-17 15:58 york_hust 阅读(1949) 评论(0) 推荐(0)
在局域网中实现多播功能[zz]
摘要:最近一直在看《Unix网络编程》这本书,觉得这本书很适合初学socket编程的人(比如说我自己 ^_^ )。我一直对于多播的实现比较模糊,在看了书上的多播部分的介绍,才发现在程序中实现一个基本的多播功能是如此简单。 在这里我不想照本宣科的大说什么理论,概念的东东,我的目的是说明在我们的代码中如何实现多播功能。 开发环境: VC 6.0(sp5), 使用winsock2(ws2_32.lib) 测试环境: 三台机器位于两个不同的AD域中,所有机器都是windows 2000(SP4)的操作系统。 sz09和kenfilweb4位于域kenfilszwin2k, kenfil-sz18是域sz18 阅读全文
posted @ 2012-06-15 15:06 york_hust 阅读(1170) 评论(0) 推荐(0)
指针与指向指针的指针
摘要:示例程序:typedef struct jilu{ char *value; struct jilu *next;}JL;JL * head = NULL;JL ** p, *q; //p用来指向分配的节点p = (JL **)malloc(15 * sizeof(JL *)); 定义了一个结构JL定义了指向JL型的对象的指针head和p定义了指向JL*型的对象的指针p,JL*型实际上就是指JL型的指针,即head和p,这里p就是一个指向指针的指针,p中存放JL*型指针的地址最后一行为p分配了15个JL*型指针的存放空间,这使得p成为一个数组,一个存放JL*型指针的数组,p数组中的元素都... 阅读全文
posted @ 2012-06-15 09:19 york_hust 阅读(214) 评论(0) 推荐(0)
const类[zz]
摘要:const用在成员函数后 主要是针对类的const 对象如:class Text{public: void printconst(void)const{cout < < "hello " < <endl;} void print(void){cout < < "hello " < <endl;}private: int k;};const Text a;//上面定义了类Text的一常量对象int main(void){ a.printconst(); //ok a.print(); //error //上面 阅读全文
posted @ 2012-06-14 09:35 york_hust 阅读(144) 评论(0) 推荐(0)
静态成员[zz]
摘要:在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。例如: class test{ public: test(){} ~test(){} public: //静态成员函数 static int getCount(){ return m_nCount; } private: //静态数据成员 static int m_nCount; }; int test::m_nCount=0; 静态数据成员和普通数据成员区别较大,体现在下面几点: (1)普通数据成员属于类的一个具体的对象,只有对象被创建了,普通数据成员才会... 阅读全文
posted @ 2012-06-14 09:30 york_hust 阅读(258) 评论(0) 推荐(0)
编译时如何使用库[zz]
摘要:-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了。 好了现在我们知道怎么得到库名了,比如我们自已要用到一个第三方提供的库名字叫libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里的函数,我们还需要与libtest.so配套的头文件)。放在/lib和/usr/lib和/usr/local/lib里的库... 阅读全文
posted @ 2012-06-08 09:48 york_hust 阅读(424) 评论(0) 推荐(0)
全局变量,局部变量,静态变量,外部变量的区别
摘要:全局变量是在所有函数体的外部定义的,程序的所有部分(甚至其他文件中的代码)都可以使用.全局变量不受作用哉的影响,总是可用的(也就是说,全局变量的生命期一直到程序的结束)局部变量出现在一个作用域内,它们是局限于一个函数的.局部变量经常被称为自动变量,因为它们在进入作用域时自动生成,离开作用域时自动消失.静态变量是指那些本不应该在程序整个生命期里存在的变量可以在程序的整个生命期里存在的变量(如局部变量),要达到这样的效果,只要在这样的变量前加上static就可以了,static变量的是在函数范围之外他是不可用的,所以它不可能被轻易地改变,这会使错误局部化,static的另一个意思是:在某个作用域外 阅读全文
posted @ 2012-06-05 15:15 york_hust 阅读(4725) 评论(0) 推荐(1)
C++中public,protected,private访问[zz]
摘要:第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。第二:类的继承后方法属性变化。private 属性不能够被继承。使用private继承,父类的prot 阅读全文
posted @ 2012-06-01 15:10 york_hust 阅读(20555) 评论(0) 推荐(3)
gcc和g++的区别[zz]
摘要:很多人不是很明白GCC与G++的区别gcc和g++都是GNU(组织)的一个编译器。误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。 阅读全文
posted @ 2012-06-01 15:07 york_hust 阅读(346) 评论(0) 推荐(0)

1 2 下一页