C++ 形參與實參的傳遞
函式呼叫形參、實參的問題
函式呼叫時,引數分兩種 一種是送進去的引數,一種是想從裡面得到的引數。比如:
ExternalRectangle((unsigned char*)(frame->imageData), ObjInfo,widthstep,alarm_flag,&ROI_left,&ROI_right,&ROI_top,&ROI_bottom);
對於這個函式來說:我們需要送進去的引數是rame->imageData ObjInfo,widthstep,
從裡面得到的引數是:alarm_flag,&ROI_left,&ROI_right,&ROI_top,&ROI_bottom
一個函式的改動需要動三個地方:
標頭檔案+呼叫的部分+程式實現的部分
標頭檔案:
//void ExternalRectangle(unsigned char* pRGBIn, MS_ObjectInfo *ObjInfo, int ObjCount, int widthStep);
void ExternalRectangle(unsigned char* pRGBIn, MS_ObjectInfo *ObjInfo, int ObjCount, int widthStep,bool &alarm_flag1,int *alarm_left,int *alarm_right,int *alarm_top,int *alarm_bottom);
函式實現部分:
void ExternalRectangle(unsigned char* pRGBIn, MS_ObjectInfo *ObjInfo, int i1, int widthStep,bool &alarm_flag1,int *alarm_left,int *alarm_right,int *alarm_top,int *alarm_bottom)
2.
*alarm_left= ObjInfo[i1].TarBox.left;
*alarm_right=ObjInfo[i1].TarBox.right;
*alarm_top=ObjInfo[i1].TarBox.top;
*alarm_bottom=ObjInfo[i1].TarBox.bottom;
與
alarm_left= &ObjInfo[i1].TarBox.left;
alarm_right=&ObjInfo[i1].TarBox.right;
alarm_top=&ObjInfo[i1].TarBox.top;
alarm_bottom=&ObjInfo[i1].TarBox.bottom;
的區別:
前者可以實現形參與實參的傳遞。
下面只能在函式的實現裡面,打印出來的資料是對的,不能傳遞到外部。
3. alarm_flag 被覆蓋掉。
改了函式的結構:
4. 現在的問題是:每次檢測ROI 區域之後,框自動縮小。