use*_*258 2 c c++ arrays pointers implicit-conversion
我有一个看起来像这样的结构.
struct puzzle {
int d[16];
};
Run Code Online (Sandbox Code Playgroud)
我听说C/C++中的数组和指针是相同的,所以我认为struct会存储一个指针,而指针指向一个int数组.但是,我使用调试器进行了简单的实验,看看它是如何存储的,我发现数组直接存储在结构中.
我听说C/C++中的数组和指针是相同的
没有!他们非常不同.在许多实例中,数组表达式衰减为指针,但这就是它.除此之外,数组和指针是非常不同的生物.更多地了解数组的衰减性质,以避免这样的混淆:什么是数组衰减?
为什么数组指针不存储在结构中?指针存储在哪里?
该数组是struct它的成员,它按预期存储.隐含地获取了衰减的指针,这里没有任何东西要存储.
struct puzzle s;
int *p = s.d; /* p is now pointing to s.d[0] */
Run Code Online (Sandbox Code Playgroud)
这里s.d隐式转换为int*.这种衰变发生的地方和不发生的地方取决于所讨论的语言.在C++中,实例比C更多.这是为什么不在C和C++上标记问题的另一个原因.
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |