值傳遞 (pass by value),指針傳遞(pass by pointer),當發生函數調用時,需要給形參分配存儲單元、當傳遞是對象時,要調用拷貝構造函數。而且指針最后析構時,要處理內存釋放問題。
引用傳遞(pass by refenrence),在內存中沒有產生形參。效率大大提高!也不用處理指針的析構問題。
通過以上分析,我們設計程序時應該盡量使用引用,少利用指針。
頭文件聲明
private: Ui::MainWindow *ui; void ReadArray(const char* array_test,int size); template<class T,int N> void ReadArray2(T (&array_test)[N]);
定義
void MainWindow::ReadArray(const char *array_test,int size) { for(int i=0;i<size;i++) { //qDebug()<<"ReadArray"<<*array; // array++; qDebug()<<"ReadArray"<<array_test[i]; } } template<class T,int N> void MainWindow::ReadArray2(T (&array_test)[N]) { for(int i=0;i<N;i++) { qDebug()<<"ReadArray2"<<array_test[i]; } }
調用
char array_test[4]={'a','b','c','d'}; qDebug()<<"sizeof"<<sizeof(array_test); ReadArray(array_test,4); ReadArray2(array_test);
結果
sizeof 4 ReadArray a ReadArray b ReadArray c ReadArray d ReadArray2 a ReadArray2 b ReadArray2 c ReadArray2 d