c语言数组的大小能不能在程序中设定?

其实c语言我也是刚学,所以问题讲的不是很清楚,请多多包涵。
假如我要用一个数组来计算n个数的和,那么我就可以在编写程序的时候先声明一个由n个元素组成的数组(array[n]),然后再一一赋值用来计算。如果我声明的数组是array[50],那么我就只能计算50个以内的数的和,而且这是编写程序的时候就已经固定了的。但是我要计算n个数的那个n是未知的。也就是说当我想要在程序中计算超过50个数的时候,我就要重新修改代码,更改数组的大小,这很麻烦。所以我能不能在程序中读取输入的一个值n,用那个值来创建一个由n个元素组成的数组?如果可以那么要怎么做?

哈哈……我来回答吧!!!这个问题当初我也一直有疑问,不过现在知道了!
C语言,在后边你会学到动态分配内存,那时候就可以在程序中设定数组的大小,我习惯用C++的new而不是C的malloc,不过方法差不多!先申请一片空间,在程序最后释放,给你个例子!
C++的:
//返回类型为 int* 类型(整数型指针),分配大小为 sizeof(int) * 100;
int* parr; parr = new int [100];
C的
//而 malloc 则必须由我们计算要字节数,并且在返回后强行转换为实际类型的指针。
int* p; p = (int *) malloc (sizeof(int));

最后不要忘了释放!
C++用delete
C用free
你在网上可以搜所一下……
另外推荐一下我的文章,可以给你新手学习的意见,嗯,算是打广告!可以不看……
http://www.iiacm.net/post/9.html

参考资料:http://www.iiacm.net/post/9.html

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-29
1.“计算n个数的和”这个题目不需要开一个长度n的数组,你只要定义两个变量即可。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int sum=0,n,i,k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&k);
sum=sum+k;
}
printf("%d\n",sum);
}
2.也可用动态申请的方法,楼上有回答。
3.如果你会C++里面有变长数组。
第2个回答  2011-01-29
数组的定义大小必须是固定的,不然编译器不知道怎么分配内存。
相实现你所说的功能必须动态开劈内存,
#include <stdlib.h>
#include <malloc.h>
int *p;
int n;
scanf("%d",&n);
p=(int *)malloc(n*sizeof(int));

free(p);
第3个回答  2011-01-29
可以,
C99标准中有变长数组
可以直接scanf("%d",&n);
再int a[n];
前提是编译器支持(现在C99编译器多得是)
动态分配内存也行
第4个回答  2011-01-29
不能在程序中读取输入的一个值n,创建一个由n个元素组成的数组。
接着往下学,动态分配内存可以实现这样的功能……
相似回答