zoukankan      html  css  js  c++  java
  • 在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];
    }

    2.函数返回一个数组

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

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

    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,
                       };

     return  tx;

    }

    然后用指针接收

    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;
  • 相关阅读:
    EML格式解析及其访问实现
    Windows Live Writer测试
    这几天为搬房子的事烦死了。
    今天装MSSQL2005时发现有些安装文件要跟2000共享(无法更改安装盘符)
    今天看到一段比较有意思的JS脚本,根据访问速度来选择镜像。
    MS的帮助越来越多视频了。
    邹健写的公交车路线查询(包括转车近到远排列)。
    今天终于搬到这边住了,就是感觉贵了点。
    第一次看到银行系统用DotNet来做。
    这几天上火了
  • 原文地址:https://www.cnblogs.com/wxh-53919/p/10709140.html
Copyright © 2011-2022 走看看