C语言--下标引用 c语言下标运算符

1. 除了优先级之外,下表引用和间接访问完全相同。如下面两个表达式是等同的:
array[subscript] *(array+(subscript))
2. 2[array]表达式是合法的 表示的意思与*(2+array),也就是*(array+2)是完全一样的。但是绝对不应该这么写,影响程序的可读性。
C语言--下标引用 c语言下标运算符
3.在可读性方面,下标有一定的优势。但在另一方面,这个选择可能会影响运行时效率。假定这两种方法都是正确的,下标绝不会比指针更有效率,但指针有时会比下标更有效率。
以下面两个循环来进行研究,它们用于执行相同的任务,将数组的所有元素都置为0。首先,使用下标方案: int array[10],a; for( a = 0; a <10; a+=1) array[a] =0; 为了对下标表达式求值,编译器在程序中插入指令,取得a的值,并把它与整型的长度(也就是4)相乘。这个乘法需要花费一定的时间和空间。 下面使用另一种方案: int array[10],*ap; for( ap= 0; ap<10; ap++) *ap = 0; 这个乘法运算出现在for语句的调整部分。1这个值必须与整型的长度相乘,然后再于指针相加。但这里存在一个重大区别:循环每次执行时,执行乘法运算的都是两个相同的数(1和4)。结果,这个乘法只在编译时执行一次——程序现在包含了一条指令,把4与指针相加。程序在运行时并不执行乘法运算。 这个例子说明了指针比下标更有效率的场合——当你在数组中1次1步(或某个固定的数组)地移动时,与固定数组相乘的运算在编译时完成,所以在运行时所需的指令就少一些。 现在考虑下面两个代码段: a = get_value(); a = get_value(); array[a] = 0; *(array +a) = 0; 两边的语句所产生的代码并无区别。a可能是任何值,在运行时方知。所以两种方案都需要你乘法指令,用于对a的值进行调整。这个例子说明了指针和下标效率完全相同的场合。

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/80577.html

更多阅读

转载 C语言:随机函数rand()、srand()、random()和rando

原文地址:C语言:随机函数rand()、srand()、random()和randomized()的区别和用法作者:猎空声明一点:在VC++中,没有random()和randomize()函数,只有rand()和srand()函数。其中,random()和randomize()函数的使用的方法分别与rand()和srand()

C++中stdafx.h是什么意思 c语言stdafx.h

C++ 中stdafx.h中文意思,并且在C++中起到的作用是什么?stdafx就是Standard Application Fram Extend。没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。Windows和MFC的include文件都非常大,即使有

如何学习C语言编程

如何学习C语言编程——简介6 部分:准备工作 变量的使用 使用条件语句 学习循环语句 使用函数 不断学习诞生于上世纪70年代的C语言是一门古老的语言了, 但作为一门底层语言,时至今日它仍然非常强大。学习C语言能够为学习其他更复杂

转载 C语言贪心算法 c语言贪心算法

你真牛原文地址:C语言贪心算法作者:人鱼的泪贪心算法开放分类:算法、信息学贪心算法所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最

声明:《C语言--下标引用 c语言下标运算符》为网友清仓处理分享!如侵犯到您的合法权益请联系我们删除