最近在看nginx的源码,其中有段代码如下:
ngx_max_module = 0;
for (i = 0; ngx_modules[i]; i++) {
ngx_modules[i]->index = ngx_max_module++;
}
ngx_modules[]数组的定义如下:
ngx_module_t *ngx_modules[] = {
&ngx_core_module,
&ngx_errlog_module,
&ngx_conf_module,
&ngx_events_module,
&ngx_event_core_module,
&ngx_epoll_module,
&ngx_http_module,
//.省略
NULL
}
for循环中靠什么来判断何时终止遍历呢?for循环语句表达如下:
for (表达式1; 表达式2; 表达式3)
语句
从语法角度看,for 循环语句的3 个组成部分都是表达式。最常见的情况是,表达式1
与表达式3 是赋值表达式或函数调用,表达式2 是关系表达式。
由于在C语言中,关系表达式的值是非NULL和1代表真,NULL和0代表假。因此,由于ngx_modules[]数组的最后一个元素是NULL,因此在遍历到最后一个元素的时候,关系表达式的值为假,循环结束。
除非注明,本博客文章均为原创,转载请以链接形式标明本文地址
本文地址: http://blog.cnwyhx.com/?p=215