CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

帮主救我!!!

楼主heiheihei(嘿嘿嘿)2001-05-29 08:58:00 在 C/C++ / C语言 提问

void   main()  
  {   float   b[3][2],*p;  
      int   i;  
      p=b[3];  
      for(i=0;i<6;i++)  
          scanf("%f",p+i);  
      for(i=0;i<6;i++)  
          printf("%.2f",*(p+i));  
  }  
  此程序在BC3.1编译通过。但在运行结束之后会蹦出:执行非法操作,即将交闭...请问是为什么?操作系统:WIN98.  
  还有:如果将第四行的p=b[3];换成p=b;则会发生编译错误:Cannot   convert   'float[2]*'   to   'float*'。而在TC2却是正常。又是为什么?  
  老是被这些鸡毛蒜皮的事弄得神经兮兮,TC和BC我到底要听谁的?!   快要发疯了………… 问题点数:10、回复次数:3Top

1 楼glhorse(happy day)回复于 2001-05-29 09:09:00 得分 10

你的程序存在着严重的越界问题,你对指针还是不够太了解,把   i   改成   i   <   2再试试。  
   
  还是以   bc   为准吧,bc   比   TC   更能发现程序中潜在的错误。Top

2 楼heiheihei(嘿嘿嘿)回复于 2001-05-29 09:13:00 得分 0

有道理!在下怎么聪明一世,糊涂一时了呢?  
  多谢指正!  
   
  Top

3 楼mazecrazy(Carl)回复于 2001-05-29 09:14:00 得分 0

那你把第四行的  
  p=b[3];  
  改成:  
  p=b[0];  
  看看。  
   
  你犯的错是在C语言里数组的索引是从0开始而不是从1开始。b[3]指向的不是合法的内存空间。  
  式式看!  
   
  Top

相关问题

  • 我是丐帮帮主!
  • 不知道有没有人来救救我?!---请各位好心的帮主都来看一看吧
  • 紧急求救!!!119!119!帮主,高手,大虾。。。
  • 帮主吉祥
  • 请教帮主!
  • ---------有请帮主!!!((((((((((((((*)))
  • 有帮主罗
  • 帮主,我有几个问题都是我自已回答,删除不掉呀!
  • 为何我的短消息不能回复,请帮主看一下,谢谢。
  • 要“快车伴侣”源码的来报到,千万不不不要贴E-MAIL,请帮主别杀我

关键词

得分解答快速导航

  • 帖主:heiheihei
  • glhorse

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo