C语言的调试-数组(21)

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);
}
  

 输入数字:(程序没有完全调试结束)

从0x0012ff04开始存放数组的值。由于是整型。所以占有四个字节。第一个是12所以对应的是0c00000,其他类似。比如-4对应了F4FFFFFF。

下面的图是另一个调试过程。

其中可以见到i的变化。红色。它的开始地址为0012FF00。其他类似。大家感觉一下

通过上面的学习应该对基本的调试等有了了解。其中有汇编代码。大家可以看看怎么翻译的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值