在qt中用c语言数组,在QT函数中返回一个数组/把一个数组传参给函数
1.把數(shù)組傳參給函數(shù)
可以定義一個(gè)QVector的一個(gè)數(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ù)返回一個(gè)數(shù)組
首先在c++中是不允許數(shù)組作為函數(shù)的返回值的
在我剛開(kāi)始使用返回?cái)?shù)組時(shí),直接返回去一個(gè)數(shù)組,讓一個(gè)指針去接收,如下:(錯(cuò)誤的寫(xiě)法)
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)在運(yùn)行的時(shí)候會(huì)出現(xiàn)段錯(cuò)誤,發(fā)現(xiàn)很多C語(yǔ)言都是這樣寫(xiě)的,并沒(méi)有錯(cuò)。
后來(lái)發(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;
總結(jié)
以上是生活随笔為你收集整理的在qt中用c语言数组,在QT函数中返回一个数组/把一个数组传参给函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言规定 函数返回值6,C语言六函数.
- 下一篇: 对象 普通po转_谈谈C++对象的构造