C 语言中的 foreach 循环
下面的内容将研究 C 语言是否支持 for-each
循环。首先,我们必须准确地知道什么是循环。
编程语言中的循环
编程语言中的语句或单词集合的执行可以循环执行多次,重复次数由条件评估的结论确定。必须满足后续条件才能在循环内执行语句。
可以在 for-each
循环的帮助下完成对集合组件的迭代。集合可以是列表或数组。
它对数组的每个元素执行其操作。
C 语言中的 for-each
循环
C 不支持 for-each
构造,因此无法实现。当使用点表示法解析数组时,接收方不知道数组有多长。
因此,无法确定何时到达数组的末尾。请记住,C 语言中的 int*
变量是指向内存中包含 int
的位置的指针。
没有头对象有关于按顺序排列的数字数量的信息,这是因为没有。因此,程序员必须跟踪这一点。
另一方面,在使用列表时创建类似于 for-each
循环的功能很简单。
for(Node* node = head; node; node = node.next) {
//Your logic will be here
}
你可以选择使用数组来完成这两项工作中的任何一项。
- 数组的长度应该存放在数组的第一个成员中。
- 将数组封装在一个
struct
中,该结构存储其长度和对数组本身的引用。
以下示例中显示了一种这样的结构。
typedef struct job_t
{
int countvariable;
int* arr;
}
arr_t;
使用宏在 C 语言中实现 for-each
循环
此外,我们可以利用宏来简化代码,使其更易于理解和编写。对于某些数据结构,我们可以构建宏来实现 C 语言中的 for-each
结构。
为了更好地理解这个概念,让我们看一下下面的例子。
#include <stdio.h>
int main() {
#define FOREACH(item, arr, start, size)\
for(int i = start, keep = 1;\
keep && i < size;\
keep = !keep, i++)\
for (item = arr[i]; keep; keep = !keep)
int arr[] = { 3, 9, 7, 1, 8 };
FOREACH(int z, arr, 3, 7)
printf("Shanii Demo index: %d. element: %d\n", i, z);
}
你现在可以定义 start
索引和 size
以便它适用于衰减数组指针。不需要 int*
并且 count!= size
已更改为 i<size
以防用户无意中将 i
更改为大于 size
, 这将导致他们陷入困境一个无限循环。
输出:
Shanii Demo index: 3. element: 1
Shanii Demo index: 4. element: 8
Shanii Demo index: 5. element: 32766
Shanii Demo index: 6. element: -1762484992
相关文章
在 C 语言中使用 typedef enum
发布时间:2023/05/07 浏览次数:181 分类:C语言
-
本文介绍了如何在 C 语言中使用 typedef enum。使用 enum 在 C 语言中定义命名整数常量 enum 关键字定义了一种叫做枚举的特殊类型。
C 语言中的 extern 关键字
发布时间:2023/05/07 浏览次数:114 分类:C语言
-
本文介绍了如何在 C 语言中使用 extern 关键字。C 语言中使用 extern 关键字来声明一个在其他文件中定义的变量
C 语言中的 #ifndef
发布时间:2023/05/07 浏览次数:186 分类:C语言
-
本文介绍了如何在 C 语言中使用 ifndef。在 C 语言中使用 ifndef 保护头文件不被多次包含 C 语言中的头文件用于定义同名源文件中实现的函数的接口。