当前位置:  开发笔记 > 编程语言 > 正文

什么是令人信服的例子,指针算法比数组下标更可取?

如何解决《什么是令人信服的例子,指针算法比数组下标更可取?》经验,为你挑选了1个好方法。

我正在为一个介绍性的C类准备一些幻灯片,我试图提出使用指针算法而不是数组下标的好例子(和动机).

我在书中看到的很多例子都相当.例如,许多书籍展示了如何反转字符串中所有值的大小写,但除了用*p替换a [i]之外,代码是相同的.

我正在寻找一个好的(和简短的)单维数组的例子,其中指针算法可以产生明显更优雅的代码.有任何想法吗?



1> Brian R. Bon..:

再次获取指针而不是值:

当他们想要再次获得指针时,通常使用指针算法.要在使用数组索引时获取指针:您是1)计算指针偏移量,然后2)获取该内存位置的值,然后3)您必须使用&再次获取地址.这是更多的打字和不太干净的语法.

示例1:假设您需要一个指向缓冲区中第512个字节的指针

char buffer[1024]
char *p = buffer + 512;

比以下更清洁:

char buffer[1024];
char *p = &buffer[512];

示例2:更高效的strcat

char buffer[1024];
strcpy(buffer, "hello ");
strcpy(buffer + 6, "world!");

这比以下更清洁:

char buffer[1024];
strcpy(buffer, "hello ");
strcpy(&buffer[6], "world!");

使用指针算术++作为迭代器:

在迭代元素数组中的每个元素时,使用++递增指针并使用 - 递减.它比使用用于跟踪偏移的单独变量更清晰.


指针减法:

您可以使用指针算法指针减法.在某些情况下,这可能有助于在您指向的元素之前获取元素.它也可以使用数组下标来完成,但它看起来非常糟糕且令人困惑.特别是对于python程序员,其中给出了负的下标来从列表的末尾索引某些东西.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有