二维数组返回值的问题

来源:互联网 发布:java sql注入原理 编辑:程序博客网 时间:2024/06/06 00:43

函数返回值的问题在项目中用到了好多次,返回数值,一维数组,二维数组,经过总结后发现规律所有发返回值的处理都相同,都需要有一个相同类型的数值,一维数组和二维数组来接收返回值(就是俗话说的种瓜得瓜,种豆得豆)

闲话不多说,直接上代码:

#include<iostream>
using namespace std;
int **num()
{
 int **a = new int *[5];
 for (int i = 0; i < 5; i++)
 {
  a[i] = new int[ 5];//易错点,在对二维数组的列进行动态申请内存是容易犯的一个错误就是写成int a[i]=new int [5];
 }
 
 for (int i = 0; i < 5; i++)
 {
  for(int j = 0; j < 5; j++)
  {
   a[i][j] = j;
  }
 }
 return a;
}
int main()
{
 int **cpy = num();//定义一个相同类型的二维数组接收即可,调用函数的同时接收到了返回值
 int i, j;
 for (int i = 0; i < 5; i++)
 {
  for (int j = 0; j < 5; j++)
  {
   cout << cpy[i][j];
  }
  cout << endl;
 }
 
}
在二维数组学习的时候遇到另外一个问题也就是经常会有指针越界的问题,不止一次的错误,调试的时候没有提示,但是到运行的时候就有问题了,但是当你定位的时候也定位在下面

for(inti=0;i<index;i++)
    {
          kind[index]=new double[6];//这是经常错误的所在,就是index的罪魁祸首,应当把index改为i即可;
    }
    for(int i=0;i<index;i++)
    {
        for(int j=0;j<6;j++)
       {
           kind[i][j]=j;
        }
    }
每次化了大把的时间,都来调试,在对行申请内存的时候,直接用了index,而没有在for循环中写循环的变量i,也就是只对index的这一行申请了内存,所以当运行到i<index是就会出现错误,切记切记;

原创粉丝点击