|
|
1
3
C 2018标准中没有定义这一点,因此行为是未定义的(4 2:未定义的行为在本文件中用未定义行为或省略任何明确的行为定义来表示。)。
演员阵容进行转换(6.5.4.5)。转换在6.3中有规定。指针转换在6.3.2.3中有规定。第1段涵盖指向或来自的指针
只剩下第7段:
这适用于我们的情况, 但它并没有告诉我们结果的价值 .它告诉我们,当我们将结果转换回原始类型时,我们将具有与原始指针相等的值。但可以想象的是,转换后的值是不适合用于解引用的某种编码形式。
例如,想象一个为调试而设计的C版本,其中所有指针都插入了出处信息。指向的指针
然而,当我们使用
这个假设程序符合C标准:
进一步注意,标准中指定了将指针转换为指向字符类型的指针并使用它来访问表示对象的字节,但我们假设的C实现可以允许这样做。它只是批准使用任何指向对象类型的指针来访问字符值,即使出处说它起源于其他类型。 人们可能会相信 打算 标准的一部分是允许转换后的指针用作指向其新类型的指针,但是 它没有明确地说 因此,该行为在技术上不是由C标准定义的。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |