C++数组动态分配空间

2025-02-25 04:26:23
推荐回答(5个)
回答1:

用new关键字(这是c++语言):
#include
using namespace;
void main()
{
cin>>a;
int *h=new int[a];
}
用以上代码就可定义一个h数组,大小为a;
对于第二个问题,我试过了,可以。

回答2:

你的程序中的常整形变量const int n=num;其中n只有在程序运行起来的时候才能知道n的值是多少,因为你的n(常整形)是通过传进来的参数来进行赋值操作的,然而数组分配空间的时候必须事先知道数组的大小,所以,会出现错误的bug

回答3:

可以利用C语言中的malloc.h头文件
#include
...
int n=0;
int *Array=(int *)malloc((n+1)*sizeof(int));
输入n,就可以定义一个下标从0到n的数组。

回答4:

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
*/

回答5:

如果不是必须使用数组的话,建议你使用容器 list和vector都可以~~~
不需要分配地址空间的,都是自增长类型~~~