易码技术论坛

 找回密码
 加入易码
搜索
查看: 1506|回复: 7

[求助] 关于C数组的菜菜问题

[复制链接]
发表于 2007-12-12 17:05:26 | 显示全部楼层 |阅读模式
C语言不能定义动态数组,也就是说数组的大小不能用变量表示。
那我想做一个简单的程序来计算n个同学成绩的平均值
先让用户输入一个数值n,表示一个集合里面有n个同学的成绩,
然后定义函数average()来计算这个平均值
在主函数中调用这个自定义函数
请问这样的功能,用数组应该怎样实现?请高手帮帮忙,本人初学,很多东西都还不懂~
发表于 2007-12-12 19:33:12 | 显示全部楼层
Refer to "malloc" & "free" functions
 楼主| 发表于 2007-12-12 22:32:11 | 显示全部楼层
...............
发表于 2007-12-12 23:23:49 | 显示全部楼层
int *p;
int *arr;
p = (int *)malloc(sizeof(int) * n);
if(p != NULL)
{
    arr = p;
    arr[0]......arr[n-1]
    ...
    free(p);
}


int *p;
p = (int *)malloc(sizeof(int) * n);
if(p != NULL)
{
    average(p);
    ...
    free(p);
}

看你在哪上面用了,一般这样就可以了
也有些地方要像这样用(较小的嵌入式系统)
unsigned char xdata malloc_mempool[0x1000];
...
xdata void *p;
init_mempool(&malloc_mempool,sizeof(malloc_mempool));
p = malloc(n);
...

[ 本帖最后由 donfz 于 2007-12-13 19:12 编辑 ]
发表于 2007-12-13 10:24:50 | 显示全部楼层
C99支持动态数组,但是你用的估计不是C99标准
ANSI C就只能用malloc和free……
 楼主| 发表于 2007-12-13 14:48:52 | 显示全部楼层
对呃,我用ANSI C标准
谢谢4楼的哦。
都还是在初学,所以惯例——TurboC
发表于 2007-12-13 16:14:35 | 显示全部楼层
p = (int *)malloc(n);
应该是这样吧:
p = (int *)malloc(sizeof(int) * n);
......
发表于 2007-12-13 19:14:23 | 显示全部楼层
原帖由 gameghost 于 2007-12-13 16:14 发表
p = (int *)malloc(n);
应该是这样吧:
p = (int *)malloc(sizeof(int) * n);
......

是这样的
谢谢指正
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-18 11:48 , Processed in 0.011365 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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