0

以下表达式在 C 中用于获取特定元素的地址。

 &a[x]

返回值的类型是什么?这取决于什么?它是否总是相同的约定还是取决于操作系统?


我需要知道这一点,因为:

我需要从这个指针中提取一个位模式,所以我试图了解该值是十六进制还是二进制。当您说指针时,它是像:0x25434 还是像 0111000111?

因为这会影响我提取比特的方式

4

2 回答 2

6

对于 T 的数组,返回值的类型是指向 T 的指针,声明为T *

T a[] = ...;
T *ptr = &a[n];

这个指针如何显示——二进制、十六进制、十进制、莫尔斯——完全取决于显示它的代码。格式值是一种流行的%p调试选择,它通常会以十六进制打印指针的值(内存地址)。

如果指针指向的地址需要用数字表示,可以通过将指针强制转换为uintptr_t整型来获得:

uintptr_t addr = (uintptr_t) ptr;

然后可以使用通常的算术和二进制运算符检查地址的位。

于 2013-03-16T18:54:03.030 回答
0

例如,如果 a[] 是 int 数组,则它将是 int*。如果您不熟悉 C 语言,我建议您阅读本书http://en.wikipedia.org/wiki/The_C_Programming_Language

于 2013-03-16T18:55:25.427 回答