64,648
社区成员
发帖
与我相关
我的任务
分享
#pragma once
#define Default_Length 20
class UIntArray
{
public:
UIntArray(int length);
UIntArray();
~UIntArray(void);
void AddInt(int value);
int *GetInt(int index);
void SetArrayLength(int length);
int GetLength();
void RemoveAll();
private:
int i_length;
int p_count;
int **IntArray;
};
#include "StdAfx.h"
#include "UIntArray.h"
UIntArray::UIntArray(int length)
{
IntArray = (int **)malloc(length * sizeof(int *));
i_length = length;
p_count = 0;
}
UIntArray::UIntArray()
{
IntArray = NULL;
i_length = 0;
p_count = 0;
}
UIntArray::~UIntArray(void)
{
int i = 0;
//for(i = 0;i < i_length;i++)
//{
// if(IntArray[i] != NULL)
// {
// free(IntArray[i]);
// IntArray[i] = NULL;
// }
//
//}
if(IntArray != NULL)
{
free(IntArray);
IntArray = NULL;
}
}
void UIntArray::AddInt(int value)
{
if(i_length == 0 || IntArray == NULL)
return;
if(value != NULL && p_count < i_length)
{
IntArray[p_count] = &value;
printf("%d\n", *IntArray[p_count]);
p_count++;
}
}
int *UIntArray::GetInt(int index)
{
if(i_length == 0 || IntArray == NULL)
return NULL;
if(index < i_length)
{
return IntArray[index];
}
return NULL;
}
void UIntArray::SetArrayLength(int length)
{
IntArray = (int **)malloc(length * sizeof(int *));
i_length = length;
}
int UIntArray::GetLength()
{
return i_length;
}
void UIntArray::RemoveAll()
{
p_count = 0;
if(IntArray != NULL)
{
free(IntArray);
IntArray = NULL;
}
}
UIntArray *intArray = new UIntArray();
intArray->SetArrayLength(3);
intArray->AddInt(1);
intArray->AddInt(2);
intArray->AddInt(3);
//for(int i = 0;i < intArray->GetLength();i++)
// printf("%d\t", intArray->GetInt(i));
printf("%d\n", *intArray->GetInt(3));
intArray->RemoveAll();
intArray->SetArrayLength(3);
intArray->AddInt(4);
intArray->AddInt(5);
intArray->AddInt(6);
for(int i = 0;i < intArray->GetLength();i++)
printf("%d\t", intArray->GetInt(i));
delete intArray;
void UIntArray::SetArrayLength(int length)
{
IntArray = (int **)malloc(length * sizeof(int *));
i_length = length;
}
if(IntArray != NULL)
{
free(IntArray);
IntArray = NULL;
}
/*在main中先定义6个变量,
AddInt(int value)应该引用,变为AddInt(int &value)
否则只是个copy。
int *GetInt(int index),变为GetInt(int index)
返回一个值。*/
#include <stdlib.h>
#include <stdio.h>
#pragma once
#define Default_Length 20
class UIntArray
{
public:
UIntArray(int length);
UIntArray();
~UIntArray(void);
void AddInt(int &value);//<------------------------引用
int GetInt(int index);//<--------------------------返回一个值
void SetArrayLength(int length);
int GetLength();
void RemoveAll();
private:
int i_length;
int p_count;
int **IntArray;
};
UIntArray::UIntArray(int length)
{
IntArray = (int **)malloc(length * sizeof(int *));
i_length = length;
p_count = 0;
}
UIntArray::UIntArray()
{
IntArray = NULL;
i_length = 0;
p_count = 0;
}
UIntArray::~UIntArray(void)
{
int i = 0;
//for(i = 0;i < i_length;i++)
//{
// if(IntArray[i] != NULL)
// {
// free(IntArray[i]);
// IntArray[i] = NULL;
// }
//
//}
if(IntArray != NULL)
{
free(IntArray);
IntArray = NULL;
}
}
void UIntArray::AddInt(int &value)//<------------------------引用
{
if(i_length == 0 || IntArray == NULL)
return;
if(value != NULL && p_count < i_length)
{
IntArray[p_count] = &value;
printf("%d\n", *IntArray[p_count]);
p_count++;
}
}
int UIntArray::GetInt(int index)
{
if(i_length == 0 || IntArray == NULL)
return 0;
if(index < i_length)
{
return *IntArray[index];//<-----返回值
}
return 0;
}
void UIntArray::SetArrayLength(int length)
{
IntArray = (int **)malloc(length * sizeof(int *));
i_length = length;
}
int UIntArray::GetLength()
{
return i_length;
}
void UIntArray::RemoveAll()
{
p_count = 0;
if(IntArray != NULL)
{
free(IntArray);
IntArray = NULL;
}
}
int main()
{
UIntArray *intArray = new UIntArray();
intArray->SetArrayLength(3);
int a=1, b=2, c=3, d=4, e=5, f=6;//<----------定义
intArray->AddInt(a);//带入
intArray->AddInt(b);
intArray->AddInt(c);
for(int i = 0;i < intArray->GetLength();i++)
printf("%d\t", intArray->GetInt(i));
printf("%d\n", intArray->GetInt(3));
intArray->RemoveAll();
intArray->SetArrayLength(3);
intArray->AddInt(d);
intArray->AddInt(e);
intArray->AddInt(f);
for( i = 0;i < intArray->GetLength();i++)//vc6里 i 是重复定义
printf("%d\t", intArray->GetInt(i));
delete intArray;
return 0;
}