嗯 确切可以这么做这在法度榜样中叫做动态数组或者数组的动态扩大其道理就是声明一种类型的指针然后在定义的时刻给它赋数组的大年夜小
定义一个未知长度的数组的方法:
一是用VLA可变长数组,例如:
int i = 10, j = 20;
double a[i][j]; //定义VLA
VLA要c99才开始支持,需要使用c99编译器,例如gcc
二是使用动态数组,例如:
int m = 10, n = 20;
.........
double **p = ( double** )malloc( 10 * sizeof( double* ) );
for( i = 0; i < 20; ++i )
p[i] = ( double* )malloc( 20 * sizeof( double ) );
..........
p[5][6] = 20.68;
一是用VLA可变长数组,例如:
int i = 10, j = 20;
double a[i][j]; //定义VLA
VLA要c99才开始支持,需要使用c99编译器,例如gcc
二是使用动态数组,例如:
int m = 10, n = 20;
.........
double **p = ( double** )malloc( 10 * sizeof( double* ) );
for( i = 0; i < 20; ++i )
p[i] = ( double* )malloc( 20 * sizeof( double ) );
..........
p[5][6] = 20.68;
温馨提示:答案为网友推荐,仅供参考
第1个回答 2021-09-03
应该是问的 变长数组
像这样
int n;
scanf("%d",&n);
char buff[n];
C99支持 这种分配在栈上,大小很有限,而且移植兼容性都很差,不建议这么用
还有另一种比较小的可能,楼主问的动态数组?
#include <stdio.h>
#include <malloc.h>
int main()
{
int *a=NULL,n=0;
scanf("%d",&n);
a = (int *)malloc(sizeof(int)*n);
这里a就是指向了一个十个int大小的动态申请的内存
}
像这样
int n;
scanf("%d",&n);
char buff[n];
C99支持 这种分配在栈上,大小很有限,而且移植兼容性都很差,不建议这么用
还有另一种比较小的可能,楼主问的动态数组?
#include <stdio.h>
#include <malloc.h>
int main()
{
int *a=NULL,n=0;
scanf("%d",&n);
a = (int *)malloc(sizeof(int)*n);
这里a就是指向了一个十个int大小的动态申请的内存
}
第2个回答 2014-03-20
随便以一种类型名为例如int
int * a;
a=new int [X];
int 为类型名,a为指针(数组)名,X为数组长度本回答被网友采纳
int * a;
a=new int [X];
int 为类型名,a为指针(数组)名,X为数组长度本回答被网友采纳