【问题标题】:Can you help me understand pointers and addresses?你能帮我理解指针和地址吗?
【发布时间】:2011-03-26 01:37:58
【问题描述】:

我可以在一个 RAM 地址中存储多少字节?

一个指针的大小是多少?

我只是不确定这些基本概念,我需要一些帮助。谢谢大家。

【问题讨论】:

    标签: pointers ram memory-address


    【解决方案1】:

    您通常可以在每个内存位置存储一个字节。 (旧机器可能使用非八位字节word sizes,这些机器可能存储一个nibble 或每个内存位置12 或24 位。)但是现在,8 位是一个字节,一个字节是一个内存位置,尽管它可能不是机器的字长。

    指针的大小可能会有所不同:在 32 位平台上,指针通常为 4 个字节。在 64 位平台上,指针通常为 8 个字节。 Older platforms had different sizes of pointers 允许程序员更密切地优化他们程序的内存需求。 (我很高兴那些日子一去不复返了。)

    第一次启动 C 时让我感到困惑的是,指针引用的内存位置会根据指针的数据类型递增不同的数量。

    char *c;
    int *i;
    

    当使用偏移量或增加指针(c+1i+1)时,编译器将为 char * 指针添加 1,为 48 添加 int * 指针。我的汇编器没有提供这样的细节,我花了几个月的时间才掌握了“C 编译器知道类型的大小,只要相信它”的窍门。

    【讨论】:

    • 谢谢萨诺德。对我来说是一个非常生动而清晰的解释。
    【解决方案2】:

    指针在 32 位系统上通常有 4 个字节,在 64 位系统上通常有 8 个字节 - 但这不是固定的,可能取决于系统。

    地址只是你记忆中的一个位置,一个指针指向那个位置。但是数据可以超过一个字节 - 指针只显示第一个字节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-11
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 2012-06-05
      • 2014-10-13
      • 2011-02-19
      相关资源
      最近更新 更多