gpt4 book ai didi

c++ - 指向存储在结构中的数组的指针在哪里?

转载 作者:太空狗 更新时间:2023-10-29 23:50:20 26 4
gpt4 key购买 nike

我有一个看起来像这样的结构。

struct puzzle {
int d[16];
};

听说C/C++中数组和指针是一样的,所以想到struct会存一个指针,指针指向一个int数组。但是,我使用调试器做了简单的实验,看看它到底是如何存储的,我发现数组是直接存储在结构中的。

  1. 为什么数组指针没有存储在结构中?
  2. 指针存储在哪里?

最佳答案

I heard that arrays and pointers are the same in C/C++

No!他们非常不同。在许多情况下,数组表达式会退化为指针,但仅此而已。除此之外,数组和指针是非常不同的生物。了解更多关于数组衰减的本质以避免像这样的混淆:What is array decaying?

Why isn't the array pointer stored in the struct? Where is the pointer stored at?

该数组是 struct 的成员,它按预期存储。衰减指针是隐式获取的,这里没有什么可存储的。

struct puzzle s;
int *p = s.d; /* p is now pointing to s.d[0] */

此处 s.d 隐式转换为 int*。这种衰变发生在何处以及不发生在何处取决于所讨论的语言。在 C++ 中,实例比在 C 中多。这是为什么不同时标记 C 和 C++ 问题的另一个原因。

关于c++ - 指向存储在结构中的数组的指针在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31985815/

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