用new关键字(这是c++语言):
#include
using namespace;
void main()
{
cin>>a;
int *h=new int[a];
}
用以上代码就可定义一个h数组,大小为a;
对于第二个问题,我试过了,可以。
你的程序中的常整形变量const int n=num;其中n只有在程序运行起来的时候才能知道n的值是多少,因为你的n(常整形)是通过传进来的参数来进行赋值操作的,然而数组分配空间的时候必须事先知道数组的大小,所以,会出现错误的bug
可以利用C语言中的malloc.h头文件
#include
...
int n=0;
int *Array=(int *)malloc((n+1)*sizeof(int));
输入n,就可以定义一个下标从0到n的数组。
1、使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小。
2、例程,分配3行4列二维数组:
#include
#include
int main()
{
int **a;
int i, j;
a = (int**)malloc(sizeof(int*)*3);//为二维数组分配3行
for (i = 0; i < 3; ++i){//为每列分配4个大小空间
a[i] = (int*)malloc(sizeof(int)*4);
}
//初始化
for (i = 0; i < 3; ++i){
for (j = 0; j < 4; ++j){
a[i][j] = i+j;
}
}
//输出测试
for (i = 0; i < 3; ++i){
for (j = 0; j < 4; ++j){
printf ("%d ", a[i][j]);
}
printf ("n");
}
//释放动态开辟的空间
for (i = 0; i < 3; ++i){
free(a[i]);
}
free(a);
return 0;
}
/*
输出:
0 1 2 3
1 2 3 4
2 3 4 5
*/
如果不是必须使用数组的话,建议你使用容器 list和vector都可以~~~
不需要分配地址空间的,都是自增长类型~~~