第1个回答 2019-02-07
360问答
C语言中怎样定义动态一维数组
ruisiteng LV12
2013-09-08
用calloc或者malloc做。 因为 int n; int a[n]; 这个操作是不合法的,, 所以要用到分配内存的函数,, 请各位大虾来帮帮手。
满意答案
qt5841
LV12
2013-09-09
在C语言中,数组的定义都是固定长度的,长度不允许变化。
可以通过链表的方式来达到定义”动态数组“的等价功能,举例如下:
链表节点定义如下:
struct node
{
int data; // 数据域
struct node *next; // 指针域
};
存放数据时可以对节点中的node赋值即可,如:
struct node *p; // 定义一个链表节点
p->data = 3; // 存放第一个数据
p = p->next;
p->data = 5; // 存放第二个数据
这样,需要存放多少个数据就可以动态定义了,相当于实现了动态数组的功能。本回答被网友采纳
第2个回答 2011-10-10
C语言没有动态数组的概念,所谓动态数组,就是在使用过程中,大小可以任意改变的数组,但是C语言中的数组,只要一旦声明就无法再更改大小,所以一般都会把数组大小设置的比较大一点,但是这样会造成资源浪费,变量又不能作为数组的下标,为了应对这种问题,需要指针的帮忙.指针可以用变量作为参数,申请一段固定大小的内存空间, 格式为: int *p; p=(int *)malloc(变量*sizeof(int));
这时 p指针的作用就相当于 数组名(其实数组名也就是一个指针).希望可以帮到你
第3个回答 2011-10-10
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num,*p=0,i;
printf("输入数组元素个数:");
/*输入数组元素个数,保存到变量num中*/
scanf("%d",&num);
/*动态分配数组存储空间*/
p = (int *)malloc(sizeof(int)*num);
/*输入数据*/
for(i=0;i<num;i++)
{
scanf("%d",&p[i]);
}
/*输出数据*/
for(i=0;i<num;i++)
{
printf("%d ",p[i]);
}
/*删除动态创建的数组*/
free(p);
return 0;
}
第4个回答 2019-02-07
C语言定义动态数组需要用到动态内存分配函数,参考代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a=NULL,n,i;
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
for(i=0;i<n;++i)
a[i]=i;
for(i=0; i<n; ++i)
printf("%d ",a[i]);
free(a);
a=NULL;
return 0;
}