繁体   English   中英

可以realloc数组,然后为什么使用指针?

[英]can realloc Array, then Why use pointers?

这是我面临的就业面试。 他们问我们是否可以重新分配阵列,我告诉他们。 然后他们问 - 那么为什么我们需要指针,因为大多数人都给出了浪费内存空间的理由。 我无法给出满意的答案。 如果任何机构能给出任何令人满意的答案,我将不得不承担责任。 请提及上述陈述可能相互矛盾的任何情况。

谢谢。

您只能重新分配动态分配的数组。 如果它是静态分配的,则无法[安全]重新分配。*

指针在内存中保存数据地址。 可以使用C ++中的new / delete运算符和C中的malloc / free动态分配,解除分配和重新分配它们。

我强烈建议您阅读Kernighan和Ritchie撰写的C语言编程语言以及C ++ From the Ground Up by Herbert Schildt的C ++文本。

使用动态内存,指针,偏移等都是使用这两种语言的基础。 不知道它们是如何工作的,以及为什么它们存在将是潜在雇主拒绝你的可能原因。

*编译器不应该让你重新分配静态分配的任何东西,但如果确实如此,那么行为是不确定的

措辞有点奇怪,但对我来说,面试问题似乎是一个开放式的问题,旨在让你解释你对阵列,指针,动态内存分配等的了解。如果我是面试官,我想要阐明int *a = malloc(10 * sizeof(int));之间差异的候选人int *a = malloc(10 * sizeof(int)); int a[10]; 后续问题措辞不是很好,但它可能是试图在指针和阵列之间的差异方向上推动候选人并引发思路。

好。 您无法重新分配已静态声明的数组。 使用指针(而不是静态声明的数组)的目的是使您可以重新分配空间。 我想,从技术上来说,你可以通过传递一个指针来重新分配一个静态定义的数组,但我不想这样做。 如果指针指向malloc未分配的内存,则行为未定义。

我真的不明白如何使用指针“浪费内存”。 realloc功能: -

void *realloc(void *ptr, size_t size);

获取指向内存的指针以调整大小作为参数。 此外,指针比动态内存有更多用途,例如通过引用传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM