易截截图软件、单文件、免安装、纯绿色、仅160KB

c中和java中数组的区别

  对于原语类型的数组,如int[]   a,在C里面只要这样定义之后就可以用a[i]使用了,但是在JAVA里面是不行的,必须用int[]   a   =   new   int[LENGTH];来为数组分配空间。这里的a更应该看成C里面的指针,它和C里面的int*   a是一样的,因为这个a(C里面的)也要先malloc一个空间之后才可以用。  
  对于对象数组,则要“两次分配”,如:  
  Object[]   obj   =   new   Object[2];  
  obj[0]   =   new   Object();  
  obj[1]   =   new   Object();  
  因为数组首先是一个句柄,而这个句柄指向的2个空间里面又是存储着两个指向Object类型的句柄。  
  而C里面不完全相同:  
  struct   Object{};  
  struct   Object*   obj   =   (struct   Object   *)malloc(2   *   sizeof(struct   Object));  
   
  其实他们的原理大至是相同的。只不过JAVA里数组的内存分配是在堆里面的,必须用new   来分配,而C里面是在栈里面分配的,定义的时候会自动分配。  
  在《Thinking   in   JAVA》中有更详细的介绍。
java在声明数组的时候不能加数量的.只能初始化的时候加
int[]  a  =  new int[3];  或
int  a[]  =  new int[3];  都行
c语言中,声明的时候加不加数量都可以
int a[3] = {1,2,3};
int a[]  = {1,2,3};


相关文档:

华为C/C++笔试题(附答案,华为面试题系列)

1.static有什么用途?(请至少说明两种)
    1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
    2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
    ......

c/c++内存划分

一、一个经过编译的C/C++的程序占用的内存分成以下几个部分:
  1、栈区(stack):由编译器自动分配和释放 ,存放函数的参数值、局部变量的值等,甚至函数的调用过程都是用栈来完成。其操作方式类似于数据结构中的栈。
  2、堆区(heap) :一般由程序员手动申请以及释放, 若程序员不释放,程序结束时可能由OS回收 ......

C的函数指针实现C++的多态

C的函数指针很强大,用好了才是C语言的高手。像Gtk中的回调函数的使用,都体现了函数指针的强大威力。
struct Point{
int x, y;
};
/*Shape*/
/*----------------------------------------------------------------*/
struct Shape {
struct Methods* methods;
};

struct Meth ......

用CSocket构建C/S结构

转帖http://www.cppblog.com/bidepan2023/archive/2008/01/22/41632.html
CSocket派生于CAsyncSocket, 所有施诸于上的操作皆为同步操作。比如Connnect,Receive等。
同步操作的优点是简单易用,但缺点也显而易见,效率低下,因为你必须等到一个操作完成之后才能进行下一个操作。
如果你很关心效率,就应该优先使用CAsyncS ......

c 语言函数传参的三种方式及二级指针的理解

普通变量是直接传值show(int a,int b)
指针变量传递地址show(int *a,int *b)
引用变量是隐式传地址 1:int x;void show(int &x),实际传递的是x的地址p,但是函数内部使用x时会自动变成*p
                     ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号