C语言的调试-数组
一维数组的下标表示了数组的长度。但是其第一个下标从0开始。比如a[10]有十个数。但是不能用a[10]这个变量。
系统编译不报错。但是这其实不是我们想要的结果:
#include <stdio.h>
/*
* 返回1为正确执行
* 主函数
*
*/
int main()
{
int a[1]={33};
printf("%d",a[1] );
return (1);
}
大家可以看看上面的结果。
通过一个程序的调试,可以看出其怎么存储的。
源代码:
/**/
/************************************************************
Copyright (C), 1998-2006, Rx. Co., Ltd.
FileName: mainApp.cpp
Author: longronglin
Version : 1.0
Date: 2006-10-06
Description:
Function List:
1. int main()
History:
<author> <time> <version > <desc>
longronglin 2006/10/06 1.0 modify xxx .
***********************************************************/
#include < stdio.h >
// 定义一维数组最大长度
#define max 10
/**/ /*
* 返回1为正确执行
* 一维数组测试
*
*/
int ArrayOneDimension()
... {
int a[max];
int i;
//输入十个数
for(i=0; i<max; i++)
...{
printf("please input a number: ");
//printf("%d: ", i);
scanf("%d", &a[i]);
/**//* 如果scanf("%d ", &a[i]);在d后多了个空格则会有问题。可能和scanf的解释写法有关。*/
}
//输出十个数
for(i=0; i<max; i++)
...{
printf("%d ", a[i]);
}
return (1);
}
/**/ /*
* 返回1为正确执行
* 主函数
*
*/
int main()
... {
ArrayOneDimension();
return (1);
}
Copyright (C), 1998-2006, Rx. Co., Ltd.
FileName: mainApp.cpp
Author: longronglin
Version : 1.0
Date: 2006-10-06
Description:
Function List:
1. int main()
History:
<author> <time> <version > <desc>
longronglin 2006/10/06 1.0 modify xxx .
***********************************************************/
#include < stdio.h >
// 定义一维数组最大长度
#define max 10
/**/ /*
* 返回1为正确执行
* 一维数组测试
*
*/
int ArrayOneDimension()
... {
int a[max];
int i;
//输入十个数
for(i=0; i<max; i++)
...{
printf("please input a number: ");
//printf("%d: ", i);
scanf("%d", &a[i]);
/**//* 如果scanf("%d ", &a[i]);在d后多了个空格则会有问题。可能和scanf的解释写法有关。*/
}
//输出十个数
for(i=0; i<max; i++)
...{
printf("%d ", a[i]);
}
return (1);
}
/**/ /*
* 返回1为正确执行
* 主函数
*
*/
int main()
... {
ArrayOneDimension();
return (1);
}
输入数字:(程序没有完全调试结束)
从0x0012ff04开始存放数组的值。由于是整型。所以占有四个字节。第一个是12所以对应的是0c00000,其他类似。比如-4对应了F4FFFFFF。
下面的图是另一个调试过程。
其中可以见到i的变化。红色。它的开始地址为0012FF00。其他类似。大家感觉一下
通过上面的学习应该对基本的调试等有了了解。其中有汇编代码。大家可以看看怎么翻译的。