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

发布于 2024-10-27 16:56:08 字数 81 浏览 6 评论 0原文

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

一个指针的大小是多少?

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

How many bytes can I store in one RAM address?

And what is the size of one pointer?

I'm just not sure about these basic concepts and I need a little help. Thank you all.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱的故事 2024-11-03 16:56:08

通常每个内存位置可以存储一个字节。 (较旧的机器可能使用非八位字节字大小,并且这些机器可能存储一个半字节 或每个内存位置 12 或 24 位。)但现在,8 位是一个字节,一个字节是一个内存位置,尽管它可能不是机器的字大小。

指针的大小可能会有所不同:在 32 位平台上,指针通常为 4 个字节。在 64 位平台上,指针通常为 8 个字节。 旧平台具有不同大小的指针,以允许程序员更紧密地优化他们的程序的内存要求。 (我很高兴那些日子已经一去不复返了。)

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

char *c;
int *i;

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

You can typically store one byte per memory location. (Older machines may have used non-octet word sizes, and those machines might store one nibble or 12 or 24 bits per memory location.) But these days, 8-bits is one byte, and one byte is one memory location, though it might not be the word size of the machine.

A pointer's size may vary: on 32-bit platforms, pointers are usually 4 bytes. On 64-bit platforms, pointers are usually 8 bytes. Older platforms had different sizes of pointers to allow programmers to more closely optimize the memory requirements of their programs. (I'm glad those days are gone.)

What confused me to no end when first starting C is that the memory location referenced by a pointer increments different amounts based on the datatype of the pointer.

char *c;
int *i;

When using an offset or incrementing the pointers (c+1 or i+1) the compiler will add 1 for the char * pointer and 4 or 8 for the int * pointer. My assembler didn't provide such niceties, and it took me months to get the hang of "the C compiler knows the sizes of types, just trust it".

玻璃人 2024-11-03 16:56:08

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

地址只是内存中的一个位置,而指针则指向该位置。但数据可以超过一个字节 - 指针仅显示第一个字节所在。

An pointer has usually 4 bytes on 32-bit systems and 8 bytes on 64-bit systems - but thats not fixed and may depend on the system.

An adress is just an position in your memory and an pointer refers to that. But the data can be more than one byte - the pointer just shows there the first byte is.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文