请问在C语言里如何将一个数组元素的个数设为输入的值?

 我来答
金色潜鸟
推荐于2017-11-28 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5698万
展开全部
C/C++ 语言里, 声明 数组大小时,只允许用常数,例如:
int a[10];
int b[5*4*3];
不允许用 变量。

如何将一个数组元素的个数设为输入的值呢,一般用动态分配。
int *a; // 声明为指针。
知道大小n后, 用动态分配:
a = (int *) malloc(sizeof(int) * n);
接下来就可以 把 a 看成 你 声明过 int a[n]; 了。

对初学者来说,你开个大数组,多给些单元,就可以了。
例如,你估计 你的 n = 10 到 1000 范围,你声明 int a[2000]; 就怎么也够用了。
现代计算机用虚拟存储,1000,2000 个单元,小意思了。
浪尖上打禅
推荐于2017-11-25
知道答主
回答量:17
采纳率:0%
帮助的人:12.5万
展开全部
这其实就是动态开辟数组,需要使用到malloc函数

#include<iostream>
using namespace std;
void main()
{
//比如要开辟int型的数组a[n]
int n,*a;
printf("请输入开辟数组的大小:");
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
printf("自动维数组赋值并打印输出:\n");
for(int i=0;i<n;i++)
{
a[i]=i;
}
for(int j=0;j<n;j++)
{
printf("%d\n",a[j]);
}
free(a);
}

//看明白就懂了
追问
我是新手。。。
能不能解释一下第三行,看不懂诶

谢谢
追答
#include       //c语言头文件
#include //c语言头文件
void main()
{
//比如要开辟int型的数组a[n]
int n,*a;
printf("请输入开辟数组的大小:");
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int)); //malloc函数为C语言动态开辟内存的函数
printf("自动维数组赋值并打印输出:\n");
for(int i=0;i<n;i++) //这个循环是自己随意为数组元素赋值
{
a[i]=i;
}
for(int j=0;j<n;j++)
{
printf("%d\n",a[j]);
}
free(a);
}

//刚才的#include(iostream)是c++的头文件
//using namespace std;是c++的命名空间
//不过C++是兼容C语言的,所以没有改,不好意思
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听时间流逝
2013-07-18 · TA获得超过1716个赞
知道小有建树答主
回答量:1070
采纳率:75%
帮助的人:247万
展开全部
我当初学C的时候有过和你一样的想法,但是数组的内存只能静态分配,所以你必须指明数组的大小。
比如:int a[10];
char ch[] = "I love china!"。
一个显式指定大小,一个是隐式指定。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友71798f2
2013-07-18 · TA获得超过164个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:150万
展开全部
int i[7];
for(int x ; x < 6 ;++x)
{
i[x] = x; // x是数组第几个,值就是第几个
printf("第 i[%d] 个数是:%d",i[x],x);
}

是这个意思吗?
追问
不,本来想
scanf("%d",n);
int a[n];
但是不行。。。。
所以想问问有没有别的方法
追答
你试试下面的
scanf("%d",n);

int *a =(int *)mcalloc(n,sizeof(int)); 你试试这个,动态申请内存
for( int x = 0; x < n -1 ;++x)
{
a[x] = x; // x是数组第几个,值就是第几个
printf("第 a[%d] 个数是:%d",a[x],x);
}

free(a); //释放内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逐梦兮乐
2013-07-18 · TA获得超过6431个赞
知道大有可为答主
回答量:5151
采纳率:72%
帮助的人:1865万
展开全部
这个数组不能是变量,只能是常量,没法设置的。
追问
没法设置的吗?QAQ
追答
嗯,不可以,它必须是常量的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式