600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > c语言下标法与指针法 《C和指针》中关于指针与下标的问题

c语言下标法与指针法 《C和指针》中关于指针与下标的问题

时间:2022-05-25 02:44:45

相关推荐

c语言下标法与指针法 《C和指针》中关于指针与下标的问题

intarray[10],说明数组元素为整形。

取得a的值,并把它与整形的长度(也就是4)相乘,就是根据下标a,乘以4(整形量所占内存的字节数),所得结果就是下标变量相对数组起始位置的偏移,也就是array[a]所对应的“变量地址”(当然要加上数组基址)

intarray[10],a;

for(a=0;a

array[a]=0;

为了对下标表达式求值,编译器在程序中插入指令,取得a的值,并把它与整形的长度(也就是4)相乘。这个乘法需要花费一定的时间和空间。

intarray[10],*ap;

for(ap=array;ap

*ap=0;

ap++中,++其实就是在ap当前指针所指的位置处,加上一个ap所指元素的类型的长度,这里就是int,即4。也就是1必须与整形的长度(也就是4)相乘,然后再与指针相加。

从这里,貌似两个循环都进行了乘法,好像没有什么差异。可是,你注意到没有2个循环其实是有很大的不同的。不同在哪里呢?

仔细看,会发现数组下标中的a每次的值是不同的,每次a都会与长度4进行相乘,即进行了10次乘法。

再看看指针,你会发现ap++时,是1与长度4进行相乘,再与指针相加。每次执行乘法时,其实就是1*4。这个乘法只在编译时进行了一次运算。程序执行的时候,就没有进行乘法运算,只是简单的将4与指针相加而已。

指针比下标更有效率的一个典型。你会发现在这个场合中—当你在数组中1次1步(或某个固定的数字)地移动时,与固定数字相乘的运算在编译时完成,所以运行时所需的指令就少一些。在绝大多数机器上,程序竟会更小一些、更快一些。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。