【发布时间】:2012-05-05 09:44:45
【问题描述】:
如何在 c 中定义一个像向量一样工作的数组?该数组应采用任意数量的值。它可以取 0 个值或 10 个值或 100 个值。
下面的代码有效,但给我一个运行时错误,即堆栈已损坏。
int i = 0;
int* aPtr = &i;
int* head = aPtr;
for(i=0;i<6;i++){
(*aPtr)=i;
aPtr++;
}
同样,我如何使用char* str 来获取任意数量的字符,最后是空字符来生成字符串?
面试练习:)
【问题讨论】:
-
如果你的代码给你运行时错误,它就不起作用。您要做的就是写超过分配的
i内存,这将导致分段错误。 C++ 向量基本上是动态数组,周围有很多细节。如果你想在 C 中复制一个向量,那么它比你正在做的事情要多得多,但我不知道你想要做多少。 -
是的,这就是为什么我想知道正确的方法
-
好吧,一方面,C++
std::vector你想做什么?一切?基本是实现一个结构,它可能有一个指针和一个定义大小的int,然后编写一堆函数来接受这些结构并对它们进行操作,指针就是你的动态数组。如果你只想要一个动态数组,学习使用C memory allocation。 -
是 C 还是 C++?你已经标记了两者,但你的正文只提到了 C。
-
您可能会从我的older answers 中获得一些一般性指导。最大的变化是它删除了缓冲区中最旧的对象,您需要分配更多的缓冲区空间,将现有数据复制到新空间,添加新项目并删除旧空间。
标签: c