你能帮我理解指针和地址吗?

时间:2011-03-26 01:37:58

标签: pointers ram memory-address

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

一个指针的大小是多少?

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

2 个答案:

答案 0 :(得分:2)

通常,每个内存位置可以存储一个字节。 (较旧的机器可能使用了非八位字节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)时,编译器将为1指针添加char *4或{{ 1}}用于8指针。我的汇编程序没有提供这样的细节,我花了几个月才得到“C编译器知道类型的大小,只信任它”。“

答案 1 :(得分:1)

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

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