数组下标索引的循环原来可以这样写

一般我会这样写:

 1 #include "stdafx.h"
 2 #include <Windows.h>
 3
 4 int _tmain(int argc, _TCHAR* argv[])
 5 {
 6     int arr[]={100,101,102,103,104,105,106,107,108,109};
 7     int count=sizeof(arr)/sizeof(int);
 8     int index=0;
 9
10     ///////////////////////////here/////////////////////////////////////////
11     for (; index<count; index++)
12     {
13         printf("arr[%d]=%d\n", index, arr[index]);
14         Sleep(900);
15         if(index+1==count)
16             index=-1;
17     }
18     //////////////////////////////////////////////////////////////////////////
19
20     getchar();
21     return 0;
22 }

今天看了live555的函数:void BasicTaskScheduler::SingleStep(unsigned maxDelayTime),发现了新的非常简洁的写法:

 1 #include "stdafx.h"
 2 #include <Windows.h>
 3
 4 int _tmain(int argc, _TCHAR* argv[])
 5 {
 6     int arr[]={100,101,102,103,104,105,106,107,108,109};
 7     int count=sizeof(arr)/sizeof(int);
 8     int index=0;
 9
10     ///////////////////////////////here/////////////////////////////////////
11     do
12     {
13         printf("arr[%d]=%d\n", index, arr[index]);
14         index=(index+1) % count;
15         Sleep(900);
16     } while (true);
17     //////////////////////////////////////////////////////////////////////////
18
19     getchar();
20     return 0;
21 }

对比可知,第一个种写法,要在两个地方控制index变量(第11行,第15到第16行);而第二种写法,只需要在一个地方用一行代码(第14行),就能控制index变量。

完。

时间: 2024-10-13 16:38:41

数组下标索引的循环原来可以这样写的相关文章

窥探Swift之数组安全索引与数组切片

在Swift中的数组和字典中下标是非常常见的,数组可以通过索引下标进行元素的查询,字典可以通过键下标来获取相应的值.在使用数组时,一个常见的致命错误就是数组越界.如果在你的应用程序中数组越界了,那么对不起,如果由着程序的性子的话是会崩溃的.为了防止崩溃呢,我们会对集合做一些安全的处理.比如对数组进行扩展,从而对数组的索引进行安全检查,保证数组的index在正常范围内.在Objective-C中也是经常对数组,字典等做一些处理操作. 今天的博客的主要内容是先对Objective-C中常用集合的安全

使用字段的值作为数组下标

对于awk命令,任何表达式都可以用作数组的下标.所以,也可以用字段作下标.下面的例子中的程序用于计算所有名字在第2 个字段出现的次数,并引入了一种for循环的新形式. for(index_value in array) statement 在前面介绍的例子中,END块中出现的for循环的工作过程如下:变量name被设为count数组的索引值,在每次for循环的迭代中,执行print操作,首先打印的是索引值,然后是保存在元素中的值(打印输出的次序无法确定). 范例 $ cat datafile4

C/C++ 数组下标可以是负值

我们知道,数组的第一个元素下标是 0.数组的范围也就是从 array[0] 到 array[size – 1]. 但实际上C/C++ 支持正负下标. 负下标必须在数组边界内:否则结果不可预知. 以下代码显示了正数组和负数组下标: #include <iostream> using namespace std; int main() { int intArray[1024]; for (int i = 0, j = 0; i < 1024; i++) { intArray[i] = j++

MSIL 教程(二):数组、分支、循环、使用不安全代码和如何调用Win32 API(转)

转自:http://www.cnblogs.com/Yahong111/archive/2007/08/16/857574.html 续上文[翻译]MSIL 教程(一) ,本文继续讲解数组.分支.循环.使用不安全代码和如何调用Win32 API 数组 本程序分配一个int型的数组并给他的元素赋值,然后打印出元素和数组的长度. 命令: newarr type— 生成一个元素类型为type 的数组.数组的大小必须在调用该命令前装入堆栈.该命令会把一个数组的引用装入堆栈. stelem.i4— 给一个

数组定义属性遍历循环,输出最大数

public class shuzu { public static void main(String[] args) { //数组 //类型+[] // int[]s; // // Spring[]str; // // //使用之前初始化大小 // int[]a=new int[5];//数组初始化,数组长度为5 // // //数组的索引:从0开始.0,1,2,3,4.最大值是数组长度-1. // //给每一个空间赋值: // a[0]=0; // a[1]=1; // a[2]=2; //

利用数组实现几张图片循环显示

2015-04-12 17:40:22 利用数组实现图片循环就是将图片放在数组中,然后循环显示 以四张图片为例 <script> //利用数组对象实现四张图片每隔5秒换一张的效果 var img=new Array();//创建数组对象 var index=0;//定义数组下标 img[0]=new Image(); img[0].src='../../../imgs/66.ico'; img[1]=new Image(); img[1].src='../../../imgs/68.ico';

使用array_merge重新排列数组下标

array_merge() 函数把两个或多个数组合并为一个数组. 如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的).如果数组是数字索引的,则键名会以连续方式重新索引. 注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引. 使用array_merge重新排列数组下标

程序猿之---C语言细节11(数组下标越界后测试、数组下标中“ ,”运算符,副作用)

主要内容:数组下标越界后测试.数组下标中" ,"运算符,副作用 #include <stdio.h> int main(int argc, char ** argv) { int a[2]={1,2},b[2] = {3,4};//输出未知值 int i = 0; printf("%d\n",b[0,2]); //逗号为一种运算符,b[0,2]被当成b[2],在这里b[2]是超出 // 了下标,但是输出为1,是a[0]的值(通过改变a[0]的值输出也改变

JS 中数组字符串索引和数值索引研究

先来看一个问题: var array = []; array["a"] = "hello"; array["b"] = "world"; array["c"] = "yes"; console.log("length: " + array.length);//0 在之前看过的许多javascript书籍中,都宣称js是可以使用字符串作为数组下标的,因此我在用的时候也没