gpt4 book ai didi

有人能解释一下 C 语言中这条语句在内存中发生了什么吗?

转载 作者:行者123 更新时间:2023-11-30 14:23:21 24 4
gpt4 key购买 nike

我有以下 C 代码,我正在尝试理解它。

char buffer[128];
A* a = (A*) &buffer[sizeof(A*)];

起初,我尝试使用 A* a = (A*) buffer[sizeof(A*)];这给了我一个警告,我想这是因为这实际上会给我 sizeof(A*) 处的 char 并强制转换它?另一个困惑是,既然 buffer 已经是指向数组第一个元素的指针,为什么我需要一个 & 运算符来获取转换为 A* 的指针。有人可以帮我理解这段代码吗?

谢谢!

最佳答案

相关行占用您的 128 字节 buffer ,查看索引 sizeof(A*)并返回对它的引用,将其转换为 A 类型的指针.

Another confusion is since buffer is already a pointer to the first element of the array why do I need a &operator to get a pointer to cast to A*.

嗯,这是因为,当你写索引 buffer 时使用 [] 下标来数组,它返回指向缓冲区索引的值,而不是内存位置本身。通过前置 &您正在获取该数据的内存地址。

关于有人能解释一下 C 语言中这条语句在内存中发生了什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12941238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com