问题标签 [pointer-arithmetic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
250 浏览

c - C 指针加减法 6.5.6

我试图理解 C99 sect 6.5.6 的第 8 和第 9 段(加法运算符)

第 8 段是否意味着:

对于第 9 段,我的理解是 ptrdiff_t 总是大到足以容纳 2 个指针的差异。但是措辞:“只要值适合 ptrdiff_t 类型的对象”似乎表明这种理解是错误的。我的理解是错误的还是C99有别的意思。

您可以在此处找到标准草案的链接:http: //cboard.cprogramming.com/c-programming/84349-c-draft-standards.html

0 投票
4 回答
5987 浏览

c - NULL + int 的结果是什么?

我已经看到在 OpenGL VBO 实现中使用了以下宏:

你能提供一些关于这个宏是如何工作的细节吗?可以用函数代替吗?更准确地说,增加 NULL 指针的结果是什么?

0 投票
2 回答
1889 浏览

c - 解引用多维数组名和指针运算

我有这个多维数组:

现在,如果我们根据定义遇到表达式*marr(ISO/IEC 9899:1999),它会说(我引用)

如果操作数的类型为“类型指针”,则结果的类型为“类型”

在那个表达式中,marr 衰减到指向他的第一个元素的指针,在这种情况下,它是一个指向数组的指针,所以当我们有表达式 *marr 时,我们得到大小为 3 的“type”数组。所以我的问题是为什么当我们执行 (*marr) + 1 时,我们只向地址添加 1 个字节而不是数组大小的 3。

原谅我的无知,我不是一个很聪明的人,我有时会被这样的琐碎事情困住。

感谢您的时间。

0 投票
5 回答
300 浏览

c++ - 指针的算术是否具有关联性?

如果我说,

现在,如果我写p + 1 + 2它会和((p + 1) + 2)?有任何标准参考证明这是错误的吗?

0 投票
2 回答
4624 浏览

c - 带结构的指针算术

如何使用指针算术打印结构的特定成员?我有一个有 2 个成员的结构。我想j通过操纵指向该结构的指针的内存来打印出成员。

0 投票
1 回答
990 浏览

c - 在 C 中使用指针算法打印字符串,包括数组、整数和指针

共有三种结构;数组ab指针c

这是代码:

现在我无法理解的是表达式b+(c-*a)-2。有人可以善良并打破它吗?

0 投票
4 回答
31353 浏览

c - 使用指向数组的 void 指针

我只是试图使用指向整数数组的 void 指针,我试图通过将其转换回 int 来查看是否可以将数组打印回来。但它给了我一些随机价值。你能告诉我哪里出错了吗?

输出是这样的:

为什么它不固定数组 a[] 的元素,即 1,2,3,4 ?

0 投票
5 回答
5216 浏览

c - C中的指针数据类型

如果我有一个像这样的指针:

我这样做:

我得到的输出为:

现在如果我做指针short int* ptr

我以与上面相同的方式打印并得到输出:

这是为什么?地址不是无符号整数吗?如果是这样,那么指针指向的数据类型应该无关紧要。指针将始终存储一个无符号整数地址,因此它将占用 4 个字节。为什么短 int 指针占用 2 个字节,而 int 指针占用 4 个字节?最后,两个指针都只存储地址,不是吗?

0 投票
5 回答
1313 浏览

c++ - 指向指针算术的指针

有人可以解释以下代码的输出吗

输出:

令我困惑的是 ++*p 和 *p++ 的不同行为。我期望输出是:

0 投票
1 回答
485 浏览

c++ - 正确使用 offsetof 宏

我正在尝试通过offsetof以下方式使用宏:

它似乎适用于这个简单的测试用例:

现在真正的问题是:

  • 安全吗?(假设与g++一起工作)
  • 它可以与任何标准优化一起使用吗?(主要-O2
  • 有没有更好的方法来做我正在做的事情?(我需要这样做以避免为每个存储xyMapBlock但能够通过块访问它们而不知道相关MapTile
  • u8减去偏移量时,我可以避免强制转换吗?我想没有,但我只是想确定一下..

谢谢