Chinaunix首页 | 论坛 | 博客
  • 博客访问: 201566
  • 博文数量: 63
  • 博客积分: 1970
  • 博客等级: 上尉
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-22 14:26
文章分类

全部博文(63)

文章存档

2013年(2)

2012年(11)

2011年(19)

2010年(6)

2007年(11)

2006年(14)

分类:

2006-11-06 10:37:19

#include
#include
int main(int argc, char *argv[])
{
        int i = 1;   //   0xbfffbec4
        char buf[4]; //   0xbfffbec0
        strcpy(buf, "AAAA"); //&buf[4] 之地址是 0xbfffbec4
        printf("%d\n", i);
        return 0;
}
//  变量i,buf在栈中, x86 的堆栈是向下生成的,buf后面有个‘\0’的结束符,正好覆盖了i的值 所以打印结果是0
 
int main(int argc, char *argv[])
{
        
        char buf[4];  // 0xbfffb2f4
        int i = 1;   //后定义 i 0xbfffb2f0
        strcpy(buf, "AAAA"); //&buf[4]  0xbfffb2f8
        printf("%d\n", i);
        return 0;
}
结果是 '1'
 
 
定义字符数组的时候最好多定义几个字节。以免造成错误.
 
阅读(538) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:GNU/Linux Unix 常用下开发工具

给主人留下些什么吧!~~