c++ - 使用指针作为循环增量器而不是通常的 "int i"是个坏主意吗?

标签 c++ c pointers loops

这方面的一个例子是:

char str[] = "Hello";
int strLength = strlen(str);

for (   char * pc = str;
        pc < str + strLength;
        pc++)
{
    *pc += 2;
}

编辑:解决了写保护内存问题。

最佳答案

我的一个问题是,如果您在 for 循环中省略 * in *pc,您将获得很多乐趣。哎呀?更一般地说,要区分重新分配指针和修改值之间的区别稍微有点困难。

但是,(虽然我手边没有),Stroustroup 本人在 C++ 编程语言一书中赞同(参见编辑)指针迭代。基本上,您可以使用指针算法在两个 char 数组之间实现非常简洁的字符串比较。

简而言之,我建议以“只读”方式使用此类指针。如果您需要写入数组,我会使用更传统的 i。

当然,这完全是我个人的喜好。

编辑:Stroustroup 不认可指针迭代 OVER integer —— 他只是在书中的某个地方使用它,所以我的推理是他不认为它会破坏良好的实践。

关于c++ - 使用指针作为循环增量器而不是通常的 "int i"是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1234760/

相关文章:

c++ - C++ SFML 的性能问题

c - 从链表中间删除节点

c++ - 无法通过引用传递对象

C:将结构体指针类型的值保存到结构体中

c++ - Visual C++ 指针作用域

c# - Ogre3D:相对于自定义中心点的旋转

c++ - 如何从 `std::istream` 加载 XML 文档?

c++ - 如何在函数调用中正确使用 CComPtr?

c - 结构和 union :从性能的角度来看哪个更好?通过值或指针传递参数?

c - fgets 无法读取换行符