- #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重新编辑 ]