程序段作用域小问题

作用域问题是程序设计里的一个最基础的问题,但今天遇到了一个之前没遇到的小问题,见以下这段程序段:

CvHistogram* hist;
{
          int    hist_size[] = { h_bins, s_bins };
          float  h_ranges[]  = { 0, 180 };          // hue is [0,180]
          float  s_ranges[]  = { 0, 255 }; 
          float* ranges[]    = { h_ranges, s_ranges };
          hist = cvCreateHist( 
            2, 
            hist_size, 
            CV_HIST_ARRAY, 
            ranges, 
            1 
          ); 

}

CvHistogram* hist;这句声明了一个直方图类型变量,

{}这是一个单独的程序段,里面的所有变量的作用域仅限于{}括号内,出了这个程序段就无效,但hist这个变量是对全局有效的,因为它在外面定义,而这样做的好处我想应该是节省内存,这个单独的程序段相当于调用另外一个函数,当程序段(函数)执行完毕,所有里面的临时变量释放内存。这种写法很好,之前没用过,以后要学着用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值