gpt4 book ai didi

c++ - 指针算术在数组之外有用途吗?

转载 作者:IT老高 更新时间:2023-10-28 22:33:12 25 4
gpt4 key购买 nike

我认为我对指针算术的语义理解得相当好,但我只在处理数组时看到过示例。它是否还有其他通过不那么不透明的方式无法实现的用途?我相信你可以找到一种巧妙的转换方法来使用它来访问结构的成员,但我不确定你为什么要打扰。我对 C 最感兴趣,但我会用 C++ 标记,因为答案可能也适用于那里。

根据目前收到的答案编辑:我知道指针可以在许多非数组上下文中使用。我特别想知道指针的算术,例如递增、取差等。

最佳答案

根据定义在 C 中的指针运算仅发生在数组上。然而,由于每个对象都有一个 representation,它由一个覆盖的 unsigned char [sizeof object] 数组组成,因此在此表示上执行指针运算也是有效的。例如:

struct foo {
int a, b, c;
} bar;

/* Equivalent to: bar.c = 1; */
*(int *)((unsigned char *)&bar + offsetof(struct foo, c)) = 1;

实际上 char * 也可以。

关于c++ - 指针算术在数组之外有用途吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7576948/

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