数组的初始化和复制
一.初始化:
1.C++中数组的初始化
a. int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5,5 };
charmyArry[10] = “xiezhongqian”;
b、将缺省的成员置为 0:
intmyArray[10] = { 1, 2 }; //initialize to 1,2,0,0,0...
初始化全部成员为0:
intmyArray[10] = { 0 }; //all elements 0
int myArray[10] = {1}; //数组初始化为{1,0,……}
c、在 C++中, 空的初始化也会将全部成员置为 0:
intmyArray[10] = {}; //all elements 0 in C++
如果声明为static,则全部成员默认为0,如果你不去手动初始化的话。
staticint myArray[10]; //all elements 0
memset(touchInfos,0, sizeof(touchInfos));
d、或者使用new一个数组:int a[] = new int[10];
这种方法不能直接初始化。
2.Java数组的初始化
动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
静态初始化:在定义数字的同时就为数组元素分配空间并赋值;
默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。
TestD.java(动态):
程序代码:
public class TestD
{
public static void main(String args[]) {
int a[] ;
a = new int[3] ;
a[0] = 0 ;
a[1] = 1 ;
a[2] = 2 ;
Date days[] ;
days = new Date[3] ;
days[0] = new Date(2008,4,5) ;
days[1] = new Date(2008,2,31) ;
days[2] = new Date(2008,4,4) ;
}
}
class Date
{
int year,month,day ;
Date(int year ,int month ,int day) {
this.year = year ;
this.month = month ;
this.day = day ;
}
}
TestS.java(静态):
程序代码:
public class TestS
{
public static void main(String args[]) {
int a[] = {0,1,2} ;
Time times [] = {new Time(19,42,42),new Time(1,23,54),new Time(5,3,2)} ;
}
}
class Time
{
int hour,min,sec ;
Time(int hour ,int min ,int sec) {
this.hour = hour ;
this.min = min ;
this.sec = sec ;
}
}
TestDefault.java(默认):
程序代码:
public class TestDefault
{
public static void main(String args[]) {
int a [] = new int [5] ;
System.out.println("" + a[3]) ;
}
}
二、数组的复制
2.1 C++中数组的复制
1)使用逐个复制的方法:
for (int i=0 ; i<10 ; i++)
{
b[i] = a[i];
}
2)使用memcpy
inta[10]={34,56,4,10,77,51,93,30,5,52};
int b[10];
memcpy(b,a,sizeof(b));
2.2 java数组的复制
常用的数组复制的方法有以下3种:
1).使用循环语句逐个复制数组的元素(最简单的方法)
for(int j = 0;j<targetArray.length;j++){
targetArray[j] = sourceArray[j];
}
2).使用System类中的静态方法arrayCopy
//使用System中的静态方法arraycopy复制数组
System.arraycopy(sourceArray, 0,targetArray, 0, sourceArray.length);
3).使用clone方法复制数组
targetArray= (int[])sourceArray.clone(); //使用clone方法将int[]型数组将sourceArray复制到targetArray 注意:由于clone方法返回值的类型是对象Object ,所以要使用(int[])强制转换为int[] 。