gpt4 book ai didi

c - 指针转换后指针算术如何工作?

转载 作者:行者123 更新时间:2023-11-30 21:48:57 25 4
gpt4 key购买 nike

int main() {
short int a[4] = {1,1, [3] = 1};
int *p = (int*)a;

printf("p: %p %d \n ", p, *p);
printf("p+1: %p %d\n", (p +1), *(p+1));
}

为什么 *p = 65537 和 *(p+1) = 65536?

最佳答案

为了理解为什么 *P 是 65537 而 *(p+1) 是 65536,让我们看一下内存:

00000001 00000000 | 00000001 00000000 | 00000000 00000000 | 00000001 00000000

我用空格分割了一个字节,并用|分割了一个short int。现在我们将 ptr 转换为 int*,它现在需要四个字节而不是两个:

00000001 00000000 00000001 00000000 | 00000000 00000000 00000001 00000000

如果您将这些二进制文件输入计算器并让它显示十进制表示形式,您将准确地得到这些数字。 (不过,这是小端字节序,因此最右边的字节是您首先输入计算器的端)

关于c - 指针转换后指针算术如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35137027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com