关于C语言中字符数组的内存存放问题疑惑

图片说明
在这段测试代码中的运行结果为
图片说明
我的疑惑是,char buf[4]内存不应该为4个字节吗,那么打印&buf[0]的其实地址不应该从 000000000064FE14开始吗,这里为什么运行是从 000000000064FE10开始,这个疑惑求解

为了防止数组越界破坏,或者为了数据对齐提高内存访问效率,编译器未必会紧密排列变量。

单个char是1个字节,int才是4个字节

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^