|
在《实用C++》第19课 老师布置的 小作业中
5、一维数组代码举例:
一整形数组中有10个数,分别是:5,8,9,0,2,1,4,7,6,3;
求出数组中最大和最小的数并进行输出。
6、小作业:
对第5点的数组进行排序,并输出排序后的数组内容。
------以下是实现的代码------------------
- int arrnNum[] = { 5,8,9,0,2,1,4,7,6,3 };
- cout << arrnNum[11] << endl; //输出的是指针数值
- for (int i =0;i<10;++i)
- {
- for (int j =i+1;j<10;++j)
- {
- int temp;
- if (arrnNum[i] < arrnNum[j])
- {
- temp = arrnNum[i];
- arrnNum[i] = arrnNum[j]; //大的值排前
- arrnNum[j] = temp; //小的值排后
- }
- [color=SeaGreen]//当i=9,j=i+1 =10,明显就超出了数组的界限,我调试时返回的是数组的指针
- //为什么执行之后结果还是正确的
- //是因为指针数据类型转化为 int时为0吗?[/color]
- }
- }
- for (int k =0;k<10;++k) //还需要遍历数组来输出数组的值
- {
- cout << arrnNum[k] << endl;
- }
复制代码
你这种情况明显是数组越界了,虽然没报异常,但是这种情况就是错误的情况,数组本身就10个元素,所以索引是:0~9,任何超出这个范围的访问都是错误的。
|
上一篇: 请问c++怎么输出这种unicode字符啊下一篇: 为什么我的vs不能输入中文?
|