|
|
1
39
这个
第二行实际上不会导致解引用(依赖于实现)。它只返回
您看到的是任意类型和字符指针之间的大量转换。使用char的原因是,它是C89标准中唯一(可能是唯一)具有显式大小的类型之一。尺寸是1。通过确保大小为1,上述代码可以实现计算值的真实偏移量的邪恶魔法。 |
|
2
10
阅读P J Plauger的“标准C库”,了解关于它和中其他项目的讨论
它只具有历史意义,但我在386/IX上使用了早期的ANSI C编译器(参见,我告诉过你历史意义,大约在1990年),该编译器在该版本上崩溃
这是某种编译器错误,尤其是因为头是与编译器一起分发的,无法工作。 |
|
|
3
9
在ANSI C中,
上面显示的代码通常适用于不主动检查空指针的编译器/环境,但仅当从空指针读取字节时才会失败。 |
|
|
4
8
回答问题的最后一部分,代码是不可移植的。
|
|
5
2
它不会出错,因为你没有去引用它。指针地址用作从另一个数字中减去的数字,而不是用于寻址内存操作。 |
|
|
6
2
它计算成员的偏移量
|
|
7
2
清单1:一组具有代表性的
宏中的各种运算符的求值顺序如下:
|
|
|
8
0
表达式包括地址常量的创建。
另外,考虑C标准中的这个报价:
C中的结构是一种复合数据类型(或记录)声明,它定义了内存块中一个名称下的物理分组变量列表,允许通过单个指针或返回相同地址的结构声明名称访问不同的变量。 从编译器的角度来看,结构声明的名称是一个地址,成员指示符是该地址的偏移量。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |