问题标签 [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.
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
c - NULL + int 的结果是什么?
我已经看到在 OpenGL VBO 实现中使用了以下宏:
你能提供一些关于这个宏是如何工作的细节吗?可以用函数代替吗?更准确地说,增加 NULL 指针的结果是什么?
c - 解引用多维数组名和指针运算
我有这个多维数组:
现在,如果我们根据定义遇到表达式*marr
(ISO/IEC 9899:1999),它会说(我引用)
如果操作数的类型为“类型指针”,则结果的类型为“类型”
在那个表达式中,marr 衰减到指向他的第一个元素的指针,在这种情况下,它是一个指向数组的指针,所以当我们有表达式 *marr 时,我们得到大小为 3 的“type”数组。所以我的问题是为什么当我们执行 (*marr) + 1 时,我们只向地址添加 1 个字节而不是数组大小的 3。
原谅我的无知,我不是一个很聪明的人,我有时会被这样的琐碎事情困住。
感谢您的时间。
c++ - 指针的算术是否具有关联性?
如果我说,
现在,如果我写p + 1 + 2
它会和((p + 1) + 2)
?有任何标准参考证明这是错误的吗?
c - 带结构的指针算术
如何使用指针算术打印结构的特定成员?我有一个有 2 个成员的结构。我想j
通过操纵指向该结构的指针的内存来打印出成员。
c - 在 C 中使用指针算法打印字符串,包括数组、整数和指针
共有三种结构;数组a
和b
指针c
:
这是代码:
现在我无法理解的是表达式b+(c-*a)-2
。有人可以善良并打破它吗?
c - 使用指向数组的 void 指针
我只是试图使用指向整数数组的 void 指针,我试图通过将其转换回 int 来查看是否可以将数组打印回来。但它给了我一些随机价值。你能告诉我哪里出错了吗?
输出是这样的:
为什么它不固定数组 a[] 的元素,即 1,2,3,4 ?
c - C中的指针数据类型
如果我有一个像这样的指针:
我这样做:
我得到的输出为:
现在如果我做指针short int* ptr
我以与上面相同的方式打印并得到输出:
这是为什么?地址不是无符号整数吗?如果是这样,那么指针指向的数据类型应该无关紧要。指针将始终存储一个无符号整数地址,因此它将占用 4 个字节。为什么短 int 指针占用 2 个字节,而 int 指针占用 4 个字节?最后,两个指针都只存储地址,不是吗?
c++ - 指向指针算术的指针
有人可以解释以下代码的输出吗
输出:
令我困惑的是 ++*p 和 *p++ 的不同行为。我期望输出是:
c++ - 正确使用 offsetof 宏
我正在尝试通过offsetof
以下方式使用宏:
它似乎适用于这个简单的测试用例:
现在真正的问题是:
- 安全吗?(假设与g++一起工作)
- 它可以与任何标准优化一起使用吗?(主要
-O2
) - 有没有更好的方法来做我正在做的事情?(我需要这样做以避免为每个存储x和y
MapBlock
但能够通过块访问它们而不知道相关MapTile
) u8
减去偏移量时,我可以避免强制转换吗?我想没有,但我只是想确定一下..
谢谢