C语言中怎样定义动态一维数组

用calloc或者malloc做。
因为
int n;
int a[n];
这个操作是不合法的,,
所以要用到分配内存的函数,, 请各位大虾来帮帮手。
没看懂

在C语言中,数组的定义都是固定长度的,长度不允许变化。


可以通过链表的方式来达到定义”动态数组“的等价功能,举例如下:

链表节点定义如下:

struct node
{
    int data;  // 数据域
    struct node *next; // 指针域
};

存放数据时可以对节点中的node赋值即可,如:

struct node *p;  // 定义一个链表节点
p->data = 3;  // 存放第一个数据
p = p->next;
p->data = 5;  // 存放第二个数据

这样,需要存放多少个数据就可以动态定义了,相当于实现了动态数组的功能。

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-03
void * malloc(字节数)
你用的时候把void 型的指针强制转换为你需要的类型的指针就行了

int *array =(int*)malloc(字节数);
第2个回答  2008-12-03
int n,*pi;
n=5;
pi=(int *)malloc(sizeof(int)*n)
再需重新分配空间时使用
void *realloc(void *block, size_t size)

最后不要忘了
free(pi);
第3个回答  2008-12-03
int *array =(int*)malloc(sizeof(int)*n); // n 为你要定义数组的大小本回答被提问者采纳
第4个回答  2008-12-03
#include <vector>
#include <stdio.h>
using namespace std;

int main(){
int n,i;
scanf("%d,&n");
vector<int> a(n);
for(i=0;i<n;i++)a[i]=rand();
return 0;
}

参考资料:http://www.zhou-teng.cn

C语言中怎样定义动态一维数组
在C语言中,数组的定义都是固定长度的,长度不允许变化。可以通过链表的方式来达到定义”动态数组“的等价功能,举例如下:链表节点定义如下:struct node{ int data; \/\/ 数据域 struct node *next; \/\/ 指针域};存放数据时可以对节点中的node赋值即可,如:struct node *p; \/\/ 定义一个链...

在C语言中如何使用malloc动态申请一维数组?
malloc()函数用来动态地分配内存空间,其原型为:void*malloc(size_tsize);描述:(参数描述)Size是以字节为单位分配的内存空间量。【功能描述】Malloc()在堆中分配指定大小的内存空间来保存数据。函数执行后,此内存空间未初始化,且其值未知。如果希望在分配内存的同时进行初始化,可以使用calloc...

C语言——动态数组的创建和使用
创建动态数组时,应遵循从外层到内层,从内层到外层的顺序。对于多维动态数组,从第一维开始创建,到最后一维结束。释放动态数组时则相反,从最后一维开始释放,至第一维结束。我们先来了解一维动态数组的创建与使用。其基本语法为:类型说明符 * 数组名 = (类型说明符*)malloc(数组长度 * sizeof(类型...

如何在vc++6.0的c语言编程中定义动态数组
i+1);scanf("%c", p+i);getchar();}printf("数组元素:");for(i = 0; i < n; i++){printf("%c\\t", *(p+i));}putchar('\\n');free(p);p = NULL; return 0;}\/*运行结果:输入一维字符数组的长度10一维字符数组的长度为10请给第1元素赋值1请给第2元素赋值2请给第3元...

C语言中一维数组正确的定义
符号常量是用一个标识符来表示一个常量,一维数组的定义方法为:类型说明符+数组名+[常量表达式];类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数组元素的个数或者长度,可以是常量或符号常量,不能为变量。例如:1、int x[8]; 表示定义一个...

C++如何用new动态开辟一个一维字符数组
指向第一个元素。4、delete 释放动态数组,通用格式是: delete [] 指针。5、new 创建的动态数组,指针可当作数组名来使用,如 float * pf = new float [200];pf[24],是数组的第25个元素的值,下标从0开始。6、new 和 delete 是C++中用来动态分配内存的,C语言使用 malloc 和 free。

C语言中一维数组正确的定义
在C语言中使用数组必须先进行定义。一维数组的定义方式为类型说明符和数组名。类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。对于数组类型说明应注意以下几点:数组的类型实际上是指数组元素的取值类型。对于同一...

C语言如何定义动态数组
intmain(void){ int*number,n,m,i;printf("thetotalnumbersis:");scanf("%d",&n);printf("backm:");scanf("%d",&m);number=(int*)malloc(n*sizeof(int));printf("input%dintegers:",n);for(i=0;i<n;i++){ scanf("%d",&number[i]);} ...

c语言 一维数组如何增加长度
C语言一维数组分静态一维数组和动态一维数组两种。一、静态一维数组,在定义的时候就已经确定其长度。如 int a[10];就是定义了一个长度为10个元素的整型数组。静态数组不支持长度的增加。如果要增加长度,只能新定义一个更长的数组,并把原始数组的数据复制到新数组中。二、动态一维数组,本质上是一个...

C语言怎样开一个大小为1000000的一维数组,直接弄好像运行不了。_百度知...
通常用两个办法解决这个问题:声明一个全局数组。就是在所有函数之外声明,如int a[1000000];就可以了。在需要的函数中用malloc函数动态申请内存,如int *pt=(int *)malloc(sizeof(int)*1000000);就可以了。用完后要用free(pt);释放所申请的内存空间。

相似回答