C/C++ 二维数据 静态动态声明和初始化及访问方法实例

 

void D2A_test()
{	
	int rows=3;
	int cols=4;
	int i,j;
	int *p;
	char* pret;
	//静态声明二维数据
	/*
    int a[3][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24}};
    //赋值
	for(i=0;i<rows;i++)
	{
		for(j=0;j<cols;j++)
		{
			a[i][j]=i*4+j;		    
		}
	}
		//
	p=a[0];  //数组首地址
	//一般二维数据读取法
	pret="一般二维数据读取法\n";	
	for(i=0;i<rows;i++)
	{
         for(j=0;j<cols;j++)
		 {
			 char* ret=new char[50];
			 memset(ret,0,50);
             sprintf(ret,"%d,",a[i][j]);
			 if(strlen(pret)<=0)
			 {
                 pret=ret;
			 }
			 else
			 {
			     pret=a2u(pret,ret);
			 }
		 }
		 pret=a2u(pret,"\n");
	}
	//*(p+5)=pos(0,1,2,3,4,5)=12
	//sprintf(ret,"test 2 array=%d,%d",*(p+5),a[1][1]);	//12,12
	ShowMsg(pret); 	
	//输出结果
	//一般二维数据读取法
	//1,2,3,4
	//11,12,13,14
	//21,22,23,24
	*/
	//动态声明二维数据	
	int zlen=rows*cols;
	int **a=new int*[rows];
	for(i=0;i<rows;i++)
	{
		a[i]=new int[cols];
	}
	p=a[0];  //数组首地址
	//赋值
	for(i=0;i<zlen;i++)
	{
		*(p+i)=i;
	}	
	//指针读取二维数据方法
	pret="指针读取二维数据方法\n";
	for(i=0;i<zlen;i++)
	{
		char* ret=new char[50];
		memset(ret,0,50);
        sprintf(ret,"%d,",*(p+i));
		if(strlen(pret)<=0)
		{
            pret=ret;
		}
		else
		{
		    pret=a2u(pret,ret);
		}         
	}
	ShowMsg(pret);
	//输出结果
	//指针读取二维数据方法
	//1,2,3,4,11,12,13,14,21,22,23,24
	return;
	//-----------------------------------
}


--vp:hsg

--create date:2012-04-19