
C++如何定义未知大小的数组?
7个回答
2015-08-03 · 知道合伙人互联网行家
关注

展开全部
如果数组的元素个数不知道的话,只能通过动态内存分配了,静态内存分配是没有办法实现的,因为静态内存分配在定义数组的时候必须指定数组的大小为一个常量或者常数,例如:
int array[10];
或者
const int Size=10;
int array[Size]。
int array[10];
或者
const int Size=10;
int array[Size]。
展开全部
...........
首先我从未碰到需要定义未知大小的数组;
其次既然知道大小未知是无法定义数组的;当然也就无法直接定义了
--------------------------
如果硬要用,只有自己做咯, 灵活用指针....下面例子仅仅用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
首先我从未碰到需要定义未知大小的数组;
其次既然知道大小未知是无法定义数组的;当然也就无法直接定义了
--------------------------
如果硬要用,只有自己做咯, 灵活用指针....下面例子仅仅用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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以动态创建这个数组 ,如
int *a = new int[100];
这儿就是创建一个100长度的int型数组
int *a = new int[100];
这儿就是创建一个100长度的int型数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如int a[1000]
即可
即可
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询