CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

菜鸟问题

楼主xianfengshizhe(先锋使者)2004-08-04 13:54:01 在 C/C++ / C语言 提问

一、定义数组  
      #define   M20  
        float   x[M+5],y[7-2][M]       这样定义数组是可以的  
  而   int   n=10,a[n];                       这样为什么定义数组就不可以了?  
   
  二、  
        main()  
            {   int   n[3],i,j,k;  
                for(i=0;i<3;i++)  
                    n[i]=0  
                    k=2;  
                for(i=0;i<k;i++)  
                    for(j=0;j<3;j++)  
                        n[j]=n[i]+1;  
                printf("%d\n",n[1]);  
            }  
        上面这个程序输出的结果是3还是1,为什么? 问题点数:0、回复次数:5Top

1 楼steedhorse(晨星)回复于 2004-08-04 14:03:06 得分 0

1。宏的展开是编译时的,而变量初始化是运行时的。C语言中,定义数组时指定的长度必须是个编译时能够确定的数,如10,一个宏,或者一个编译时可以求指的表达式。  
   
  2。编译通不过的。Top

2 楼debugGirl(都市女孩)回复于 2004-08-04 14:03:28 得分 0

定义一个数组是,数组的大小可以是常量表达式,但C是不允许对数组的大小进行动态定义的。你的定义float   x[M+5],y[7-2][M],M是一个宏定义,所以他相当于一个常量,而int   n=10,a[n];中的n确实一个变量,所以是不允许的。Top

3 楼shifan(Lothander)回复于 2004-08-04 14:04:31 得分 0

一,c里面要求申明数组的大小要是常量,因为c编译器是预先决定大小的  
  二,这个自己运行一下不就知道了?实在不明白就step嘛,一步一步地看。应该是3  
  另外n[i]=0少一个分号Top

4 楼debugGirl(都市女孩)回复于 2004-08-04 14:14:08 得分 0

输出结果是3,不过你的程序里n[i]=0的后面少个分号。  
  原因嘛:外循环,当i=0,j=0时,n[0]=1,j=1时,n[1]=n[0]+1=2,j=2时,n[2]=n[0]+1=2;  
                                当i=1,j=0时,n[0]=n[1]+1=3,j=1时,n[1]=n[1]+1=3,j=2时,n[2]=n[1]+1=3。  
  Top

5 楼liacw1017(梁上君子)回复于 2004-08-04 14:20:07 得分 0

1.要确定数组长度  
  2:可以运行,测试为   3  
  Top

相关问题

  • 菜鸟
  • 菜鸟
  • 菜鸟
  • 菜鸟菜问!
  • 菜鸟菜问
  • 菜菜鸟问!
  • 菜鸟问题 (菜鸟问)
  • 菜鸟中菜鸟提问
  • 菜菜菜菜菜菜鸟问题
  • 菜鸟菜问题

关键词

  • 定义数组
  • int n

得分解答快速导航

  • 帖主:xianfengshizhe

相关链接

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

广告也精彩

反馈

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