C\C++中数组元素下标越界可能引起的问题
数组是类型相同的对象的序列,其中的对象称为数组元素。也可以将数组想像成一连串的用下标值编号的相邻存储区。
可能在某些编程语言中,一个下标变量是不允许超出数组定义中所设的界限的。但是在C和C++中,数组是没有这种安全措施的。下面先来看看数组下标越界的几种异常结果。
例1,访问没有分配给数组的内存空间。
int main ()
{
const int SIZE = 4;
int a[SIZE] = {12,40,45,10};
for (int i = 0; i<5 : i++)
cout << "\t a[" << i << "] = " << a[i] << endl;
}
运行结果如下:
a[0] = 12
a[1] = 40
a[2] = 45
a[3] = 10
a[4] = 12358
上面的结果中a[4]访问了不属于数组的内存空间,读取了一个无用的值,这个值是以前使用这个内存单元时保存的值。大家可能会说,这有什么大不了的,这不会影响什么的呀。不急,下面再看个例子。
例2,访问数组的一个不存在的下标元素时无意中改变了一个变量的值。
int main ()
{
int a[] = {10,
相关文档:
首先确保系统已经安装了gcc/g++
1> Anjuta
打开终端:
命令:sudo apt-get install anjuta
(不能安装的需要添加安装源
添加源:点击主菜单上的“系统”》“系统管理”》“软件源”,输入密码后,在出现的对话框中点“第三方软件”,
“deb http://anjuta.org.sixxs. ......
可惜MS-DOS不是中国人写的,不支持中文。
/* Note:Your choice is C IDE */
#include "stdio.h"
main(int argc, char *argv[])
{
FILE *fp;
char ch;
int num=0,max;
int line=0;
if((fp=fopen(argv[1],"rt"))==NULL)
{
printf("\nCannot open file strike any key exit!");
getch();
exit(1);
......
#include <stdio.h>
int Count=0;
void move(char x,int n,char z){
printf(" %d. disk %d: %c => %c\n",++Count,n,x,z);
}//move
// 将塔座x上按直径由小到大且自上而下编号为1至n的n个圆盘按规则搬到塔座z上,y可用作辅助塔座
void Hanoi(int n,char x,char y,char z){
if (n==1) move(x,1,z ......