gpt4 book ai didi

c - 指针算法优于数组下标的令人信服的例子是什么?

转载 作者:太空狗 更新时间:2023-10-29 16:51:33 24 4
gpt4 key购买 nike

我正在为介绍性的 C 类准备一些幻灯片,并且我正在尝试展示在数组下标上使用指针算法的好例子(和动机)。

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

我正在寻找一个好的(和简短的)一维数组示例,其中指针算法可以生成更优雅的代码。有什么想法吗?

最佳答案

再次获取指针而不是值:

当他们想再次获得指针时,通常会使用指针运算。要在使用数组索引时获取指针:您是 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 程序员,其中给出负数下标以从列表末尾索引某些内容。

关于c - 指针算法优于数组下标的令人信服的例子是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/693139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com