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
请按任意键继续. . .
- 点赞
- 收藏
- 分享
- 文章举报