请问c具有一个"的foreach"循环结构? [英] Does C have a "foreach" loop construct?
本文介绍了请问c具有一个"的foreach"循环结构?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
几乎所有的语言有一个的foreach
回路(功能)或类似的东西。我不知道如果C有一个?你可以张贴一些示例code?
Almost all languages have a foreach
loop (function) or something similar. I wonder if C has one? Can you post some example code?
推荐答案
C没有一个foreach,但宏经常用来模仿是:
C doesn't have a foreach, but macros are frequently used to emulate that:
#define for_each_item(item, list) \
for(T * item = list->head; item != NULL; item = item->next)
和可以像
for_each_item(i, processes) {
i->wakeup();
}
迭代一个数组也是可能的:
Iteration over an array is also possible:
#define foreach(item, array) \
for(int keep = 1, \
count = 0,\
size = sizeof (array) / sizeof *(array); \
keep && count != size; \
keep = !keep, count++) \
for(item = (array) + count; keep; keep = !keep)
和可以像
int values[] = { 1, 2, 3 };
foreach(int *v, values) {
printf("value: %d\n", *v);
}
编辑:如果你也有兴趣在C ++的解决方案,C ++有一个原生的for-each语法名为为基础的一系列
In case you are also interested in C++ solutions, C++ has a native for-each syntax called "range based for"
这篇关于请问c具有一个"的foreach"循环结构?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文