1. 程式人生 > >C++ 形參與實參的傳遞

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 區域之後,框自動縮小。