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]);