c++ - 数组内存位置

标签 c++ c arrays

在这个程序中,假设数组从 2000 开始,那么元素应该出现在内存位置 arr[1]=2004 和 arr[5]=2020。如果是这样,那么 (j-i) 应该给出 16,即 j 和 i 的内存位置之间的差异。但是它为 j-i 给出了值“4”。为什么它不给出值 16?

main() 
{
 int arr[]={10,20,30,45,67,56,74};
 int *i,*j; 
 i=&arr[1] ;
 j=&arr[5] ;
 printf ("%d %d",j-i,*j-*i);
} 

最佳答案

其实是告诉你元素个数的区别。

数组连续元素之间的差总是1 要通过它们之间的地址差来查找,您需要将乘以sizeof 数据类型

获取实际地址差异,

int difference =  sizeof(int) * (j - i)

可以找到详细说明Here

关于c++ - 数组内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15037498/

相关文章:

c++ - 在 Windows 内核驱动程序中与用户空间共享来自内核空间的超过 "4Go - PAGE_SIZE"的缓冲区

javascript - 每次以不同的顺序对数组中的三个项目进行排序

c++ - C++ 默认初始化会将数组元素设置为其默认值吗?

c - 从类型指针到类型数组指针的转换是否安全?

c++ - 集成 C 和 C++ 程序

c++ 等效于 calloc 并为数组变量声明空间

python - 调度嵌入式python进程

c++ - 如何使用大值表示 C++ 中未定义的数字?

c++ - 从 Microsoft Word 获取所有宏(使用自动化)

c - 我们什么时候将 * 添加到指针?