为什么char数组4的两个元素的内存地址不同?

Syt*_*the 2 c memory arrays

当我发现两个数组元素彼此相邻并找到差异时,我正在C中试图找到解释内存地址差异的方法.这是我的代码:

#include <stdio.h>

int main(){
  char *a[5];
  printf("%p\n", (&a[0]));
  printf("%p\n", (&a[1]));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

示例输出:

0xbf9343dc
0xbf9343e0
Run Code Online (Sandbox Code Playgroud)

这样做时,输出不应该是表单的内容:

0x0....0
0x0....1
Run Code Online (Sandbox Code Playgroud)

因为char指针的大小应该是1(在我使用的32位系统上).

如果有人知道为什么会这样,并且可以提供解释,那将非常有帮助

oua*_*uah 7

a的大小char1,a的大小char *是依赖4于实现的,通常是32在位系统.

  • @Sythe`char`的大小始终为"1". (2认同)