鱼C论坛

 找回密码
 立即注册
查看: 3025|回复: 10

一个输出数组的C小程序出错了。求帮助。。。

[复制链接]
发表于 2012-7-24 22:59:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

#include <stdio.h>
void test(int b[10]);
void main()
{
       int a[10] = {2,4,6,8,10,12,14,16,18,20};
       test(a);
       putchar('\n');
}

void test(int b[10])
{
      int i;
      for(i=0 ; i<10 ; i++);
      {
             printf("%d ", b[i]);
      }
}

程序执行的结果如下:
     1245064
     Press any key to continue

我一步一步调试到  for(i=0 ; i<10 ; i++);这一步的时候,下一步执行的时候 i 的值突然变成了10;
我不知道怎么回事。。。。





想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-24 23:19:08 | 显示全部楼层
for(i=0 ; i<10 ; i++);

最后多了一个 分号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-25 00:31:31 | 显示全部楼层
错误是认识的提高
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-25 00:38:08 | 显示全部楼层
i 变成10怎么了?   for循环  是第一次执行第一个语句i = 0 ;  然后再也不会执行这个语句, 然后执行 第二条  
i < 10; 若成立 执行循环体,然后执行 i ++  ,然后执行 i < 10 ;   然后  循环体,然后 i ++ ; 然后i < 10 ;然后 循环体。。。。。。
最后当i ++ ,完了 i == 9  ;i < 10成立,然后  循环体,然后  i ++  ;  i == 10;  i < 10不成立,直接跳过循环。。。。。就这样  i要是永远不能等于10,那么永远退出不了循环了、、、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-25 13:03:29 | 显示全部楼层
2楼正解。多个分号把for语句隔离开了。下面的大括号内的内容就不属于for循环,因此输出是内存中的随机数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-25 13:46:51 | 显示全部楼层
把for循环后面那个逗号去掉,还有你那形参传指针吧,a[]或者*a都行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 10:52:59 | 显示全部楼层
当然了 你的for语句后有分号 它会先执行玩整个for循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 10:54:06 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-26 18:34:20 | 显示全部楼层
谢谢各位大哥大姐的帮忙,呵呵,是小弟疏忽了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 19:44:47 | 显示全部楼层
  1. #include <stdio.h>

  2. void test(int b[10]);

  3. void main()
  4. {
  5.         int a[10] = {2,4,6,8,10,12,14,16,18,20};
  6.         test(a);
  7.         putchar('\n');
  8. }

  9. void test(int b[10])
  10. {
  11.         int i;
  12.         for(i=0 ; i<10 ; i++)                //for后面没有分号 不然这句就是执行了十次 什么都没做
  13.         {
  14.                 printf("%d ", b[i]);               
  15.         }
  16. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 19:51:02 | 显示全部楼层
上面调用时实参用的是地址 而函数定义的是形参是整形 你这是把地址值传给 b[0] 最后结果应该是地址值  个人认为是这样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 12:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表