c - 循环遍历C中的数组
问题描述
假设我想遍历一个数组,所以我使用了一个基本的 for 循环并使用索引访问其中的每个元素但是如果我不知道我的数组有多长会发生什么?
#include <stdio.h>
#include <stdlib.h>
int main(){
int some_array[] = {2,3,5,7,2,17,2,5};
int i;
for (i=0;i<8;i++){
printf("%d\n",some_array[i]);
}
return 0;
}
这只是一个简单的例子,但如果我不知道数组有多大,那么如何在循环中放置正确的停止参数?
在 Python 中,这是不需要的,因为 StopIteration 异常开始了,但是我如何在 C 中实现它?
解决方案
这样做:
for (i=0; i<sizeof(some_array)/sizeof(some_array[0]); i++){
printf("%d\n",some_array[i]);
}
但请注意。如果将数组传递给函数,它将不起作用。如果你想在函数中使用它,那么编写函数,以便你也将大小作为参数传递。像这样:
void foo(int *arr, size_t size);
并这样称呼它:
foo(some_array, sizeof(some_array)/sizeof(some_array[0]));
但是如果你有一个只接受一个指针的函数,那么绝对没有标准的方法来找出它的大小。您必须自己实施。
推荐阅读
- asp.net-mvc - Trello Webhooks 请求无法验证
- elasticsearch - Kibana 和 Elastic Search 的基于角色的访问控制
- java - 迭代器方法中的 java.util.NoSuchElementException
- html - Flexbox - 根据显示的项目重复布局
- javascript - Angular 5:如何使用 ES6/ES5(没有 Typescript)注入路由器服务
- sonarqube - 某些 Sonarqube 6.7 仪表板中缺少 ncloc 指标
- css - 混合内容 - 不安全的样式表
- css - flexbox 和指定宽度
- python - 使用 pykafka 读取特定记录
- javascript - 访问 JSON 文件中的子树