gpt4 book ai didi

c - 为什么两个指针之间有 16 个字节的差异而不是 8 个字节?

转载 作者:行者123 更新时间:2023-12-04 12:13:09 26 4
gpt4 key购买 nike

#include <stdio.h>

int main() {
const char *myarr[7];

myarr[0] = "1st array";
myarr[1] = "2nd array";
myarr[2] = "3rd array";
myarr[3] = "4th array";
myarr[4] = "5th array";
myarr[5] = "5";
myarr[6] = "6";

printf("\n%p", myarr[0]); /*00007FF749919C18*/
printf("\n%p", myarr[1]); /*00007FF7B3C89C28*/

printf("\n%p", myarr[5]); /*00007FF749919C14*/
printf("\n%p", myarr[6]); /*00007FF7B3C89C24*/
}

当我在上面的代码中打印它们的值时,我注释了地址。第 0 个和第 1 个索引指针中存储的地址之间的差异是 16 个字节

起初我以为是因为我分配给他们的字符串是 9 个字符,所以超过 8 个字节,它不适合 8 个字节 block ,所以它是扩展到 16 字节。因此,为了检查这一点,我指向了第 5 个和第 6 个索引中的短字符串,但如您所见,地址之间仍然存在 16 字节的差异。

因为我有一个 64 位系统,地址 5th 和 6th 指针指向之间的差异不应该是 8 字节吗?

最佳答案

myarr[0]指向 "1st array" 的第一个元素

myarr[1]指向 "2nd array" 的第一个元素

它们不可能相隔 8 个字节。

不过放心&myarr[1] - &myarr[0]将是 sizeof(char*) .

请注意,您打印的地址不是 16 字节间隔:例如,第一组在第 5 个十六进制有效数字上有所不同。

关于c - 为什么两个指针之间有 16 个字节的差异而不是 8 个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52421205/

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