#include
usingnamespacestd;
classPoint{
public:
Point(intx,inty):x(x),y(y){
cout<<"调用构造函数"< } Point():x(0),y(0){ cout<<"调用默认构造函数"< } ~Point(){ cout<<"调用析构函数"< } intgetX()const{returnx;} intgetY()const{returny;} voidmove(intnewx,intnewy){ x=newx; y=newy; } private: intx,y; }; intmain(){ Point*prt=newPoint[2];//创建对象数组 prt[0].move(3,4);//通过指针访问数组成员 prt[1].move(4,3); delete[]prt; return0; } 扩展资料 C++动态二维矩阵 #include 使用命名空间std; intmain() { intd1,d2; cout<<“输入数组的行和列尺寸:\n”; cin>>d1>>d2; int**m=新的int*[d1]; inti,j; 对于(i=0;i m[i]=newint[d2]; //m现在是d1xd2数组。 对于(i=0;i 对于(j=0;j m[i][j]=(i+1)*10+j; cout<<“回显二维数组:\n”; for(i=0;i { for(j=0;j cout< cout< } 对于(i=0;i i++)delete[]m[i]; delete[]m; 系统(“暂停”); 返回0; } /* 输入数组的行和列尺寸: 45 回声二维数组: 1011121314 2021222324 3031323334 4041424344 */
ubuntu中malloc函数肯定是可以用的,lz是不是没有包含相应的头文件?
动态数组的实现代码如下
typedef struct DYNAMICINTARRAY
{
int m_iSize; // 当前已经容纳几个整数
int m_iCapacity; // 总能能容纳几个整数
int *m_pData; // 数据空间
} DynamicIntArray;
void DynamicIntArray_Append(DynamicIntArray *pArray, int iNewVal)
{
if (pArray->m_iSize == pArray->m_iCapacity) // 空间满时
{
// 重新开辟一个原始大小2倍的空间
pArray->m_iCapacity *= 2;
int *pNewData = (int *)malloc(sizeof(int) * pArray->m_iCapacity);
// 将原始数据拷入新的空间中
memcpy(pNewData, pArray->m_pData, pArray->m_iSize * sizeof(int) / 2);
// 释放掉旧的空间
free(pArray->m_pData);
pArray->m_pData = pNewData;
}
// 写入新数据
pArray->m_pData[m_iSize++] = iNewVal;
}
设定一个值n为数组大小
例子如下:
int n= 0; //数组大小,初始化为0
cin>>n; //改变n的大小
int* num = new int[n]; //创建了一个大小为n的数组
这样就创建了一个指定大小的动态数组
为数组赋值和正常数组一样
即num[0] = 1,num[1] = 2....
使用完成后不要忘记用delete [] num 释放
你可以用new 和 delete组合来分配存储空间
比如:
int n;
int *a=new int[n]
;
不过你要记得在最后用delete释放掉哦!!!
刚好我也做到这个, 直接把我的代码粘上了哈,希望能给楼主帮上忙
C++中还提供了一个函数,类似于"_extent"的,那个在free时会出错,好像是函数库版本的事情,我调试了好久才发现的,建议楼主直接不用了吧.
CPublic::pStaticCMyDoc->Method = (P_METHOD_X_10) realloc(CPublic::pStaticCMyDoc->Method, sizeof(_METHOD_X_10)*(CPublic::pStaticCMyDoc->TotalSum+1));