c语言中如何定义动态指针数组

如题所述

1、使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小。
2、例程,分配3行4列二维数组

#include <stdio.h>
#include <malloc.h>
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
*/

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
可以这样子写
int n;
printf("请输入你想定义的数组的大小:\n");
scanf("%d",&n);
int *a = (int *)malloc(n*sizeof(int));//申请n个整形数据空间 ,头文件为stdlib.h/malloc.h
if(a == NULL)//申请失败返回-1
{printf("aply error\n"); return -1;}
memset(a, 0, n); //初始化申请到的空间为0,头文件为string.h
但是定义不了动态数组本回答被提问者和网友采纳
第2个回答  2013-11-23

假设你想定义的数组是 int a[n],动态的定义方式是:

#include <stdlib.h>

int main() {
    ...
    int *a = (int*)malloc(sizeof(int)*n);
    ...
}

第3个回答  2013-11-23
int size=5; //数组大小 自己可以随便定义 或是让用户输入
char *p=new char[size]; //或是int 等其他类型类似
之后把p当数组用就好,比如p[0]就是数组的0号元素
相似回答