| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1608 人关注过本帖
标题:难道n没有得到NUM的值吗?
只看楼主 加入收藏
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
结帖率:85.29%
收藏
已结贴  问题点数:8 回复次数:7 
难道n没有得到NUM的值吗?
#include <stdio.h>
#include <stdlib.h>
 
#define NUM 10

void arrout( int w[],int m)
{int k;
 for (k=0;k<m;k++)printf("%d  ",w[k]);
 printf("\n");
}

int getindex(int n)
{int i;
 do{
     printf("\nEnter the index[0<=i<%d]:",n);
     scanf("%d",&i);}
     while(i<0||i>n-1);
 return i;
}

int arrdel(int *w,int n,int k)
{int i;
 for (i=k;i<n-1;i++)w[i]=w[i+1];
 n--;return n;
}

main()
{int n=NUM,d;
 int a[NUM]={23,55,76,545,5767,4242,45445,464,232};
  printf("output primary data:\n");
 arrout(a,n);
 d=getindex(n);
 n=arrdel(a,n,d);
 printf("output the data after delete:\n");
 arrout(a,n);
 system("PAUSE");   
  return 0;
}
这样子程序是可以运行出要的结果来。可是,若是把main函数里的第二行改成int a[n]={23,55,76,545,5767,4242,45445,464,232};
机器就显示出错信息。为什么呢,我前面不是把NUM的值赋给了n了吗?n 为什么没有得到NUM的值的呢?

搜索更多相关主题的帖子: include return include return 
2011-07-01 22:56
jlu_uestc
Rank: 2
等 级:论坛游民
帖 子:30
专家分:14
注 册:2011-4-14
收藏
得分:2 
C语言里面数组大小不能是变量
2011-07-01 23:00
shinan77
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:188
注 册:2010-9-24
收藏
得分:2 
童鞋,这就是C语言的特点,程序在编译之前必须要确定数组的大小,也就是说,数组的[]里必须是个常量!!!n是个int类型的变量,即使你给它赋值了,它还是个变量,老老实实用常量给数组开辟内存空间吧,除非用宏定义。这一点是C语言与那些面向对象编程语言的很重要的区别。

--------将学到的东西为我所用,这才是学习的目的 --------
2011-07-01 23:02
h_mastuade
Rank: 2
等 级:论坛游民
帖 子:21
专家分:86
注 册:2011-6-28
收藏
得分:1 
同上...数组大小必须是个常数
2011-07-01 23:23
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:1 
VC6.0中第二种写法是错误的。数组大小不能是变量。
devc++中都可以,这两种写法都能通过编译。都正确
2011-07-02 09:22
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
收藏
得分:1 
          现在的C99中增加了变长数组的特性,定义数组时大小可以是变量,但是那个变量要在定义数组之前就定义好了并赋了值。现在的VC好像还不支持这一特性,所以现阶段还是用常量定义数组吧。
2011-07-02 09:33
kstrwind
Rank: 1
等 级:新手上路
帖 子:1
专家分:1
注 册:2011-5-25
收藏
得分:1 
    在声明n的时候,把n声明成const int类型,就可以用n来给数组长度初始化。
2011-07-02 10:08
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
收藏
得分:0 
谢谢各位指点
2011-07-03 07:41
快速回复:难道n没有得到NUM的值吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049798 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved