欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C定义全局变量

程序员文章站 2024-01-21 21:30:40
...

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]);
相关标签: C++学习