您的位置:首页 > 编程语言 > C语言/C++

C++动态数组测试事例(七彩云南-20200309发表)

2020-04-07 12:24 1541 查看

//C++动态数组测试事例(七彩云南-20200309发表)
//目的: 测试事先明确或不明确数组长度情况下的动态数组应用
//根据:《C++程序设计基础》(第四版)“4.5 动态存储” 事例测试
//环境: Win10+VS2010, Release x64

//函数:事先知道数组长度
int funcSub1(int* pArr, int m)
{
if(m<=0) return 0;
//pArr = new int[m]; //错误: int* pArr形式必须在调用此函数前 new
if(pArr==NULL) return 0; //检查动态分配成功否

int result=0;
cout << "in funcSub1 =============" <<endl;
for(int i=0; i<m; i++)
{
pArr[i] = i;
cout<< "[" << i << "] " << i <<endl;
result += pArr[i];
}

return result;//或 return m; //返回数组长度,但无意义。
}

//函数:事先不知道数组长度
int funcSub2(int* &pArr)
{
int m = 0;

cout<<"funcSub2 Input m= ";
cin >> m; //意味着可以动态输入数组数
if(m<=0) return 0;

pArr = new int[m];//正确: 因采用引用方式(int* &pArr)
if(pArr==NULL) return 0; //检查动态分配成功否

cout << "in funcSub2 =============" <<endl;
for(int i=0; i<m; i++)
{
pArr[i] = i;
cout<< "[" << i << "] " << i <<endl;
}

return m;//返回数组实际长度(很有意义)
}

//函数:主调函数
void funcMain()
{
int *arr1=NULL, *arr2=NULL;

int nn=0;
cout<<"funcMain input nn= ";
cin >> nn;

//test for funcSub1
arr1 = new int[nn];//先new再使用(是事先知道数组大小方式)
if(arr1==NULL) return;
int sum = funcSub1(arr1, nn);
cout << "funcMain for funcSub1 =============" <<endl;
for(int i=0; i<nn; i++) cout << arr1[i] <<endl;
cout << "返回的计算求和 sum=" << sum <<endl;

//test for funcSub2
cout << endl;
int mm = funcSub2(arr2);//(是事先不知道数组大小方式)
cout << "funcMain for funcSub2 =============" <<endl;
for(int i=0; i<mm; i++) cout << arr2[i] <<endl;
cout << "返回的数组长度 mm=" << mm <<endl;

delete []arr1;
delete []arr2;
arr1 = NULL;
arr2 = NULL;
}

//应用程入口
int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;

funcMain();

system("pause");
return 0;
}

//输出
funcMain input nn= 5
in funcSub1 =============
[0] 0
[1] 1
[2] 2
[3] 3
[4] 4
funcMain for funcSub1 =============
0
1
2
3
4
返回的计算求和 sum=10

funcSub2 Input m= 6
in funcSub2 =============
[0] 0
[1] 1
[2] 2
[3] 3
[4] 4
[5] 5
funcMain for funcSub2 =============
0
1
2
3
4
5
返回的数组长度 mm=6
请按任意键继续. . .

  • 点赞
  • 收藏
  • 分享
  • 文章举报
QiCaiYunNan 发布了1 篇原创文章 · 获赞 0 · 访问量 24 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: