Comments (8)
“指针运算”在这里专指指针与整数的加减运算,嵌入式领域比较看重这条规则。
*p 和 p[0] 不受这条规则限制,不过可以说地更明白一些
from safe-rules.
未指向数组元素的指针用 p[0] 这种方式确实很怪,值得强调一下,我觉得放在这条规则里比较好。
from safe-rules.
我个人认为,如果是像我给出的示例一样,只是指针指向了一个对象(使用
new
而非new[]
),使用*
,要远好于[0]
。这在于我认为使用
[]
有暗示:这是一个“数组”,或者说这个指针指向了一片连续的内存。而*
则暗示:这是一个指针。
用 new[]
时得到的结果也是指针,我们不能直接得到指代 new 表达式所创建的数组的表达式。
另外我觉得 R14.8 的标题对标准存在一些误解。在指针算术和比较中,指向非元素对象的指针被视为指向有 1 个元素的数组首元素的指针。
from safe-rules.
我个人认为,如果是像我给出的示例一样,只是指针指向了一个对象(使用
new
而非new[]
),使用*
,要远好于[0]
。
这在于我认为使用[]
有暗示:这是一个“数组”,或者说这个指针指向了一片连续的内存。而*
则暗示:这是一个指针。用
new[]
时得到的结果也是指针,我们不能直接得到指代 new 表达式所创建的数组的表达式。
我已经强调了:“暗示这是一个“数组”,或者说这个指针指向了一片连续的内存”,我知道 new[]
的结果也是指针。
from safe-rules.
“指针运算”在这里专指指针与整数的加减运算,嵌入式领域比较看重这条规则。
*p 和 p[0] 不受这条规则限制,不过可以说地更明白一些
嗯,可以强调一下。
from safe-rules.
未指向数组元素的指针用 p[0] 这种方式确实很怪,值得强调一下,我觉得放在这条规则里比较好。
都可以强调一下,因为 R14.24
就叫:“指针运算应使用数组下标的方式”,除非改一下说法。
from safe-rules.
我个人认为,如果是像我给出的示例一样,只是指针指向了一个对象(使用
new
而非new[]
),使用*
,要远好于[0]
。
这在于我认为使用[]
有暗示:这是一个“数组”,或者说这个指针指向了一片连续的内存。而*
则暗示:这是一个指针。用
new[]
时得到的结果也是指针,我们不能直接得到指代 new 表达式所创建的数组的表达式。我已经强调了:“暗示_这是一个“数组”,或者说这个指针指向了一片连续的内存_”,我知道
new[]
的结果也是指针。
应该说这里有一个数组而 p
指向数组首元素,涉及 new[]
的情况下通常不会用到指代数组的表达式。
from safe-rules.
我个人认为,如果是像我给出的示例一样,只是指针指向了一个对象(使用
new
而非new[]
),使用*
,要远好于[0]
。
这在于我认为使用[]
有暗示:这是一个“数组”,或者说这个指针指向了一片连续的内存。而*
则暗示:这是一个指针。用
new[]
时得到的结果也是指针,我们不能直接得到指代 new 表达式所创建的数组的表达式。我已经强调了:“暗示_这是一个“数组”,或者说这个指针指向了一片连续的内存_”,我知道
new[]
的结果也是指针。应该说这里_有_一个数组而
p
指向数组首元素,涉及new[]
的情况下通常不会用到指代数组的表达式。
倒也不一定要是“首元素”,虽然不这样会很抽象,反正意思就这样。
from safe-rules.
Related Issues (20)
- R2.22 存在覆盖不完全的问题 HOT 3
- C++20 移除了“对有符号整数进行超出取值范围的左移运算”导致的未定义行为 HOT 1
- 修改“空指针”定义 HOT 1
- R5.1.21 "存在构造、析构的类" 描述不明确 HOT 2
- R2.20 windows 无法使用 `alloca.h` 标头 HOT 1
- `R14.18` 的观点非常值得商榷,且解释并不合理 HOT 3
- R1.2 中"避免避免敏感数据写入内存转储文件" 多了一个 "避免" HOT 1
- R2.15 中 "用 new 分配的数组" 是否考虑改为 "用 new[] 分配的数组" HOT 1
- “`R6.4.2` 禁用可变参数列表“中使用模板参数包的示例过时且糟糕,应该使用折叠表达式 HOT 1
- `Apache2.0` 开源协议不声明版权所有者吗? HOT 1
- `R8.41` 中对内联函数的描述不正确 HOT 3
- `SIG_ATOMIC_MIN` 与 `SIG_ATOMIC_MAX` 的问题 HOT 1
- `R2.9` “对象被移动后不应再被使用”描述与规则可以改进 HOT 1
- `R3.2.8` “不应使用宏定义常量” 中的正确示例可以改进 HOT 1
- `R2.1` “不可失去对已分配资源的控制”线程 `detach` 理论上也算失去了控制? HOT 1
- `R3.1.2` “include 指令中禁用不合规的字符”中的建议描述,不妥 HOT 2
- `cpp-ub-list` `55.` 空指针解引用 HOT 31
- `R14.1` “避免空指针解引用” 空指针的描述可以修改 HOT 4
- “堆栈”这种用词,经不起推敲,且毫无逻辑,英文也无对应 HOT 19
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from safe-rules.