以下表达式在 C 中用于获取特定元素的地址。
&a[x]
返回值的类型是什么?这取决于什么?它是否总是相同的约定还是取决于操作系统?
我需要知道这一点,因为:
我需要从这个指针中提取一个位模式,所以我试图了解该值是十六进制还是二进制。当您说指针时,它是像:0x25434 还是像 0111000111?
因为这会影响我提取比特的方式
以下表达式在 C 中用于获取特定元素的地址。
&a[x]
返回值的类型是什么?这取决于什么?它是否总是相同的约定还是取决于操作系统?
我需要知道这一点,因为:
我需要从这个指针中提取一个位模式,所以我试图了解该值是十六进制还是二进制。当您说指针时,它是像:0x25434 还是像 0111000111?
因为这会影响我提取比特的方式
对于 T 的数组,返回值的类型是指向 T 的指针,声明为T *
:
T a[] = ...;
T *ptr = &a[n];
这个指针如何显示——二进制、十六进制、十进制、莫尔斯——完全取决于显示它的代码。格式值是一种流行的%p
调试选择,它通常会以十六进制打印指针的值(内存地址)。
如果指针指向的地址需要用数字表示,可以通过将指针强制转换为uintptr_t
整型来获得:
uintptr_t addr = (uintptr_t) ptr;
然后可以使用通常的算术和二进制运算符检查地址的位。
例如,如果 a[] 是 int 数组,则它将是 int*。如果您不熟悉 C 语言,我建议您阅读本书http://en.wikipedia.org/wiki/The_C_Programming_Language