在qt中用c语言数组,在QT函数中返回一个数组/把一个数组传参给函数
1.把數(shù)組傳參給函數(shù)
可以定義一個QVector的一個數(shù)組
QVector num(10);
for(int? i =0;i<10;i++)
num [i] = i*i;
fun(num); //直接傳參數(shù)給fun(函數(shù))
void fun(QVector num)
{
for(int i = 0;i<10;i++)
qDebug()<
}
2.函數(shù)返回一個數(shù)組
首先在c++中是不允許數(shù)組作為函數(shù)的返回值的
在我剛開始使用返回數(shù)組時,直接返回去一個數(shù)組,讓一個指針去接收,如下:(錯誤的寫法)
int* mainWindow::data()
{
int? tx[] = {??? //要發(fā)送的數(shù)據(jù)數(shù)組
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()<
發(fā)現(xiàn)在運行的時候會出現(xiàn)段錯誤,發(fā)現(xiàn)很多C語言都是這樣寫的,并沒有錯。
后來發(fā)現(xiàn)c++中是不允許數(shù)組作為函數(shù)的返回值的
正確的做法是:
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
int* mainWindow::data()
{
int tx[] = { //要發(fā)送的數(shù)據(jù)數(shù)組
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()<
delete p;
總結
以上是生活随笔為你收集整理的在qt中用c语言数组,在QT函数中返回一个数组/把一个数组传参给函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言规定 函数返回值6,C语言六函数.
- 下一篇: java5年转c语言,时隔5年,C语言再