C定義全局變量

C定義全局變量

參考https://blog.csdn.net/wangyang20170901/article/details/79006310
程序工程中往往遇到這樣的問題:某個變量是貫穿始終的,主函數以及不同的子函數都要用到這個變量,並且要調用子函數改變變量的值。這時候全局變量就起到一個橋樑作用,在函數外定義,在主函數中調用定義,在子函數A中調用並賦值,在子函數B中調用該變量,此時的值已經是改變之後的值。

用法:在主函數之前定義全局變量(不包含在任何變量裏)

int pointnum;//在主函數外定義
int main(){
...
}

注意這裏不要寫static,(我試過了會報錯。。。具體還沒搞清楚爲什麼)

//調用
extern int pointnum; //全局變量,匹配點對個數

在接下來的子函數A中也用extern調用全局變量,並將函數運行中得到的數據賦給全局變量,此時該變量的值已經被改變,無論接下來在主函數還是後面的子函數中用到,都是改變之後的值

int A()//子函數A
{
  extern int pointnum;//引用全局變量
  pointnum = viewMatches.size();//將匹配點個數傳遞給全局變量
}

主函數在調用過子函數A之後,pointnum的值被徹底改變爲viewmatches.size(),可以供子函數B使用


//調用子函數A,改變pointnum的值
A(srcImage1, srcImage2);//輸入兩幅圖                                            
 
//調用子函數B,用到pointnum
solveab(matchpoint, pointnum, M1, M2);//傳入匹配點座標,匹配點對個數pointnum,投影矩陣
 
for (int i = 0; i < pointnum; i++)//釋放matchpoint,主函數也用到pointnum
    free(matchpoint[i]);
發佈了7 篇原創文章 · 獲贊 5 · 訪問量 427
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章