这是我面临的就业面试.他们问我们是否可以重新分配阵列,我告诉他们.然后他们问 - 那么为什么我们需要指针,因为大多数人都给出了浪费内存空间的理由.我无法给出满意的答案.如果任何机构能给出任何令人满意的答案,我将不得不承担责任.请提及上述陈述可能相互矛盾的任何情况.
谢谢.
您只能重新分配动态分配的数组.如果它是静态分配的,则无法[安全]重新分配.*
指针在内存中保存数据地址.可以使用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[10];
.后续问题措辞不是很好,但它可能是试图在指针和阵列之间的差异方向上推动候选人并引发思路.