加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言中数组下标为负数会怎样

(2008-08-28 10:23:47)
标签:

c语言

bug

it

分类: 计算机技术

  最近Review别人写的程序,一个函数是返回数组的下标,如果没有找到对应元素会返回-1。而看到程序中没有判断函数返回值是否有效就直接使用了-1作为数组的下标。错误是明显的,访问了错误的地址。但是使用-1作为下标时访问的地址是什么呢?一般使用0到n-1作为下标,直觉上觉得应该是无符号数,但是经过试验证明,-1作为下标时是数组之前的一个地址。

int main(int argc, char* argv[])
{

 char name[10];

 printf("name[0]  is %x\n",&name[0]);
 printf("name[-1] is %x\n",&name[-1]);


 return 0;
}

程序结果:

name[0]  is 12fed8
name[-1] is 12fed7
Press any key to continue

可以看出-1作为下标时访问的是name之前的错误地址。

 

0

阅读 收藏 喜欢 打印举报/Report
前一篇:京酱肉丝
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有