迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C语言 >

C 语言中的 foreach 循环

作者:迹忆客 最近更新:2023/03/27 浏览次数:

下面的内容将研究 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
}

你可以选择使用数组来完成这两项工作中的任何一项。

  1. 数组的长度应该存放在数组的第一个成员中。
  2. 将数组封装在一个 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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C 语言中使用 typedef enum

发布时间:2023/05/07 浏览次数:181 分类:C语言

本文介绍了如何在 C 语言中使用 typedef enum。使用 enum 在 C 语言中定义命名整数常量 enum 关键字定义了一种叫做枚举的特殊类型。

C 语言中的静态变量

发布时间:2023/05/07 浏览次数:151 分类:C语言

本文介绍了如何在 C 语言中使用静态变量。在 C 语言中使用 static 变量在函数调用之间保存变量值

C 语言中生成随机数

发布时间:2023/05/07 浏览次数:64 分类:C语言

本文演示了如何在 C 语言中生成随机数。使用 rand 和 srand 函数在 C 语言中生成随机数

C 语言中的 i++ 与++i

发布时间:2023/05/07 浏览次数:83 分类:C语言

本文演示了如何在 C 语言中使用前缀增量与后缀增量运算符。C 语言中++i 和 i++ 记号的主要区别

C 语言中获取当前工作目录

发布时间:2023/05/07 浏览次数:182 分类:C语言

本文演示了如何在 C 语言中获取当前工作目录。使用 getcwd 函数获取当前工作目录的方法

C 语言中的位掩码

发布时间:2023/05/07 浏览次数:126 分类:C语言

本文介绍了如何在 C 语言中使用位掩码。使用 struct 关键字在 C 语言中定义位掩码数据

C 语言中的排序函数

发布时间:2023/05/07 浏览次数:181 分类:C语言

本文演示了如何在 C 语言中使用标准库排序函数。使用 qsort 函数对 C 语言中的整数数组进行排序

C 语言中的 extern 关键字

发布时间:2023/05/07 浏览次数:114 分类:C语言

本文介绍了如何在 C 语言中使用 extern 关键字。C 语言中使用 extern 关键字来声明一个在其他文件中定义的变量

C 语言中的 #ifndef

发布时间:2023/05/07 浏览次数:186 分类:C语言

本文介绍了如何在 C 语言中使用 ifndef。在 C 语言中使用 ifndef 保护头文件不被多次包含 C 语言中的头文件用于定义同名源文件中实现的函数的接口。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便