- #include <QApplication.h>
 - #include <QtDebug>
 - double* transpose()
 - {
 -     qDebug() <<"in it";
 -     double trans[3][4] = {5,5,5,5,5,5,5,5,5,5,11,12};
 -     double *ptBack = new double(12);
 -     ptBack = &trans[0][0];
 -     qDebug() << *(ptBack+0) << *(ptBack+1) << *(ptBack+2);
 -     qDebug() << *(ptBack+3) << *(ptBack+4) << *(ptBack+5);
 -     qDebug() << *(ptBack+6) << *(ptBack+7) << *(ptBack+8);
 -     qDebug() << *(ptBack+9) << *(ptBack+10) << *(ptBack+11);
 -     qDebug() << "No?" <<*(ptBack);
 -     qDebug() << "No?" <<(ptBack);
 -     qDebug() <<"out of it";
 -     return ptBack;
 - }
 - int main(int argc, char *argv[])
 - {
 -     QApplication app(argc, argv);
 -     double *ptReturn = transpose();
 -     qDebug() << "Yes?" <<*(ptReturn);
 -     qDebug() << "Yes?" <<(ptReturn);
 - }
 
输出:
in it 
5 5 5 
5 5 5 
5 5 5 
5 11 12 
No? 5 
No? 0x22fde0 
out of it 
Yes? 3.47668e-310 
Yes? 0x22fde0 我该如何取到被调函数ptBack指针返回的值?
No? 5 
No? 0x22fde0 是被调函数中打印的东西;
Yes? 3.47668e-310 
Yes? 0x22fde0 是主函数中打印的东西;
扫盲下~~~
【问题继续】在被调函数中做了指针空间的赋值:
  double trans[3][4] = {5,5,5,5,5,5,5,5,5,5,11,12};
    double *ptBack = new double(12);
    double *ptArray = &trans[0][0];
    for(int i = 0; i < 12; i++)
        *(ptBack+i) = *(ptArray+i);
然后在哪儿delete ptBack?main里边?
double *ptReturn = transpose();
delete ptReturn;
因为在被调函数中这个指针空间可能比较大,在哪儿free呢?
[ 此帖被yangfanxing在2010-03-12 11:29重新编辑 ]