C++如何定义未知大小的数组?

 我来答
百度网友96ffcf7
2015-08-03 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22719 获赞数:118767
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部
如果数组的元素个数不知道的话,只能通过动态内存分配了,静态内存分配是没有办法实现的,因为静态内存分配在定义数组的时候必须指定数组的大小为一个常量或者常数,例如:
int array[10];
或者
const int Size=10;
int array[Size]。
ly86598
2012-01-09 · TA获得超过126个赞
知道答主
回答量:53
采纳率:0%
帮助的人:25.1万
展开全部
...........
首先我从未碰到需要定义未知大小的数组;
其次既然知道大小未知是无法定义数组的;当然也就无法直接定义了
--------------------------
如果硬要用,只有自己做咯, 灵活用指针....下面例子仅仅用int型做个示范,更多用法可以参考标准库怎么实现的:
class PointerArray
{
public:
PointerArray() : m_pData(NULL) , m_nSize(0), m_nLen(0)
{
}
virtual ~PointerArray()
{
if (NULL != m_pData)
{
delete[] m_pData;
m_pData = NULL;
}
}
protected:
int m_nSize;
int m_nLen;
int *m_pData;
};
class CMyArray::public PointerArray
{
public:
CMyArray (int nSize = 10)
{
if (nSize <= 0) nSize = 10;
m_nSize = nSize;
m_pData = new int[m_nSize];
}
~CMyArray ()
{
}
public:
int Length() const
{
return m_nLen;
}
bool addData(int src) //
{
if (m_nLen >= m_nSize)
{
int nSize = m_nSize * 2 + 1;
int *pTemp = new int [nSize];
if (!pTemp) return false;
memcpy(pTemp, m_pData, sizeof(int) * m_nLen);
delete []m_pData;
m_pData = pTemp;
m_nSize = nSize;
}
memcpy(m_pData + m_nLen, &src, sizeof(int));
m_nLen++;
return true;
}
};
使用方法:
CMyArray myArray(1); //定义只有一个元素的我们实现的CMyArray对象
myArray.addData(xxx); 可以任意 调用addData
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mia☆jiancha☆ce6608
2012-01-09 · TA获得超过1526个赞
知道小有建树答主
回答量:713
采纳率:100%
帮助的人:533万
展开全部
你可以动态创建这个数组 ,如
int *a = new int[100];
这儿就是创建一个100长度的int型数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皮迷寻关俗0q
2012-01-09 · TA获得超过2146个赞
知道小有建树答主
回答量:325
采纳率:0%
帮助的人:337万
展开全部
如int a[1000]
即可
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
文琼诗0CV
2012-01-09
知道答主
回答量:13
采纳率:0%
帮助的人:6.7万
展开全部
可以用vector实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式