值传递 (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