AAA*_*eef 1 c pointers memory-address
*编辑以澄清该数组未知
如果未知整数数组的地址是0x00006ffd29c78e70(整数为4字节),则元素数组[1]的地址是多少?
提前谢谢了。
数组的地址也是其第一个元素的地址。这是因为内存中的数组本身仅依次包含其每个元素(从索引 0 开始)。因此,如果A是一个数组,&A[0]则指向与 相同的内存A。(请注意,整数类型数组和指向整数类型的指针之间存在技术差异,尽管它们在许多情况下可以互换,因为在某些情况下前者会衰减为后者,这超出了本问题的范围;这是为什么我将它们描述为都指向相同的内存)。
您询问了第一个元素,然后提到了A[1]。请注意,这A[1]是第二个元素。A[0]是第一个元素。
因此,在您的特定示例中,您可以这样做:
int *A = (int *)0x00006ffd29c78e70;
int *A1 = &A[1]; // points to second element
int foo = *A1; // second element contents
Run Code Online (Sandbox Code Playgroud)
或使用指针算术
int *A = (int *)0x00006ffd29c78e70;
int *A1 = A+1; // points to second element
int foo = *A1; // second element contents
Run Code Online (Sandbox Code Playgroud)
请注意,+1不会向(字节)地址加一,而是将指针递增 1 int。
注意我在上面已经写过int- 使用正确的整数数据类型来表示 4 字节整数。
| 归档时间: |
|
| 查看次数: |
20445 次 |
| 最近记录: |