c - 为什么 char 数组的两个元素的内存地址差异为 4?

标签 c arrays memory

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

#include <stdio.h>

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

示例输出:

0xbf9343dc
0xbf9343e0

执行此操作时,输出不应该是以下形式:

0x0....0
0x0....1

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

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

最佳答案

一个char的大小是1,一个char *的大小是实现相关的,通常是4 > 在 32 位系统中。

关于c - 为什么 char 数组的两个元素的内存地址差异为 4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757853/

相关文章:

c - 调试我的 C 程序,猜数字游戏

c++ - 转换/旋转字节数组中的位

php - 使用 PHP 解析 Google 地理编码 JSON

android - 显示图像导致内存错误(31961104 字节分配内存不足。)

c# - 如何使用 C# 查找系统缓存和空闲内存

Python - GAE - 脚本循环消耗大量内存

c++ - 如何在 C(++) 中定义自定义错误代码

c - 索贝尔算法实现

c - 字典类型 "Phone book"开放散列?和可能的链表?

php - Foreach 只返回数组元素的第一个字母?