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};
相关文档:
网络搜集-资料
格式化输入输出函数
Turbo C2.0 标准库提供的两个控制台格式化输入、 输出函数:printf( ) 、scanf()。
printf()函数用来向标准输出设备(屏幕)写数据;
scanf() 函数用来从标准输入设备(键 ......
1、bool、float、指针变量与"零值"比较的if语句?
答:
bool flag; if(flag),if(!flag)
char *p; if(p==NULL),if(p!=NULL)
float x;
const float EPSILON = 1e-6;
if((x>=-EPSILON)&&(x<=EPSILON)) //(-0.000001~0.000001)
if((x<-EPSILON)&& ......
系统环境:Ubuntu 9.04
软件环境:NetBeans 6.7.1 C/C++ 、JDK1.6.0_16
本次目的:完成NetBeans 6.7.1 C/C++ 的配置工作、编译测试及对中文支持
首先从官网上下载最新版的Netbeans 选择C/C++工作台下载[点击进入],弹出的新网页将会自动下载,如下图:
在进行安装之前,我们先安装JDK, ......
C的函数指针很强大,用好了才是C语言的高手。像Gtk中的回调函数的使用,都体现了函数指针的强大威力。
struct Point{
int x, y;
};
/*Shape*/
/*----------------------------------------------------------------*/
struct Shape {
struct Methods* methods;
};
struct Meth ......
一直对结构体弄的模糊,今天终于有机会澄清了。有个错:不明白没有结构体名的结构体如何像结构体名一样使用。
typedf struct st ......