在QT函数中返回一个数组/把一个数组传参给函数

1.把数组传参给函数
能够定义一个QVector的一个数组
QVector<int> num(10);
for(int  i =0;i<10;i++)
num [i] = i*i;
fun(num); //直接传参数给fun(函数)

void fun(QVector<int> num)
{
   for(int i = 0;i<10;i++)
    qDebug()<<num[i];
}c++

2.函数返回一个数组数组

首先在c++中是不容许数组做为函数的返回值的 函数

在我刚开始使用返回数组时,直接返回去一个数组,让一个指针去接收,以下:(错误的写法)指针

int* mainWindow::data()blog

{class

   int  tx[] = {    //要发送的数据数组
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                   };bug

 return  tx;数据

}语言

而后用指针接收di

int *p = data();

qDebug()<<p[0];

发如今运行的时候会出现段错误,发现不少C语言都是这样写的,并无错。

后来发现c++中是不容许数组做为函数的返回值的 

正确的作法是:

#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
int* mainWindow::data()
{
   int  tx[] = {    //要发送的数据数组
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                        0xA2, 0x00, 0x00,
                   };

  int* temp = new int[ARRAY_SIZE(tx)];
  for ( int i =0; i < ARRAY_SIZE(tx); i++)
  temp[i] = (int)rx[i];
   return temp;
}

int  *p = data();
qDebug()<<p[0];
delete p;
相关文章
相关标签/搜索