二维数组动态开辟与传参

    这里简单介绍动态二维数组的开辟与释放,以及二维数组传参的几种方法

动态二维数组的开辟与释放

     方法1:直接开辟一维数组
                eg:   int *p = new int[10*10];//当成一维数组进行开辟 
                访问数据的方式 : 通过a[i*10+j] 来访问第(i*10+j)个数据。
                优缺点: 访问数据很方便,且new的次数少,释放空间容易,但是不便于理解,且使用时需要转化。
void Test()
{
	int *p = new int[10*10];//直接开辟一维数组
	//初始化
	for(size_t i=0; i<10; i++)
	{
		for(size_t j=0; j<10; j++)
		{
			p[i*10+j] = i*j;  //通过a[i*10+j]来访问第(i*10+j)个数据
		}
	}
	//访问数据
	for(size_t i=0; i<10; i++)
	{
		for(size_t j=0; j<10; j++)
		{
			cout<<p[i*10+j]<<" ";  //通过a[i*10+j]来访问第(i*10+j)个数据
		}
		cout<<endl;
	}

	delete[] p; //释放
}
  方法2: 一维指针数组。(指针数组+一维指针)
  eg:   int** maze = new int*[M];
                       for(int i=0; i<M; i++)
                       {
                            maze[i] = new int[N];
                       }  
                访问数据的方式: 直接通过a[i][j]访问第i行第j列的数据。
                优缺点: 通过a[i][j]访问数据容易,但new的次数太多释放空间不容易。
void Test()
{
	//开辟空间
	int ** p = new int*[10];
	for(size_t i=0; i<10; i++)
	{
		p[i] = new int[10];
	}

	//访问通过p[i][j]访问
	for(size_t i=0; i<10; i++)
	{
		for(size_t j=0; j<10; j++)
		{
			p[i][j] = i*j;
			cout<<p[i][j]<<" ";
		}
		cout<<endl;
	}
	//释放
	for(size_t i=0; i<10; i++)
	{
		delete[] p[i];
	}
	delete[] p;
}
 二维数组的传参方法
        方法1:形参为二维数组并给定第二维的长度  
                    形参: maze[][5] ----- 实参: maze
 
  
 
void InitAPrint(int p[][10]) //形参辟[][10]
{
	//访问通过p[i][j]访问
	for(size_t i=0; i<10; i++)
	{
		for(size_t j=0; j<10; j++)
		{
			p[i][j] = i*j;
			cout<<p[i][j]<<" ";
		}
		cout<<endl;
	}
}

void Test()
{
	int arr[10][10];

	InitAPrint(arr); //实参arr
}

      方法2:  形参为指向数组的指针并给出数组的长度  
                形参:(*maze)[5] ----  实参:maze           
 
  
 
void InitAPrint(int(*p)[10]) //形参辟(*)p[10]
{
	//访问通过p[i][j]访问
	for(size_t i=0; i<10; i++)
	{
		for(size_t j=0; j<10; j++)
		{
			p[i][j] = i*j;
			cout<<p[i][j]<<" ";
		}
		cout<<endl;
	}
}

void Test()
{
	int arr[10][10];

	InitAPrint(arr); //实参arr
}

这里仅列出两种传参方法,更多方法详见:https://blog.csdn.net/gqb_driver/article/details/8886687       






 
 

 
 


 
 

  
 
 
    

           

猜你喜欢

转载自blog.csdn.net/smile_zhangw/article/details/80003938