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号元素

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){...

如何定义一个动态的数组?
利用这一特性定义一个指针数组。int **p= new int*[size];\/\/定义指针数组 int *p[5];\/\/ 假若知道二维数组的行数为5 然后对指针数组中的每一个指针分配一个一维数组空间,这样便动态定义了二维数组 事实上,我认为指针数组的主要用途,就在于动态定义多维数组 for(int i=0;i<size;i++){ p...

...*)malloc(len+1);C语言中的动态数组是怎么定义的呢
char *p;p=(char *)malloc(len+1);这样就申请了len+1个内存空间,并把第一个单元的地址强制为char *型指针赋给了char *型指针p。然后就可以像使用数组一样使用p了,如p[0]=3;等。

怎么用C语言动态的创建一个数组呢?
1、在上面的 3*5 的数组中,x[0],x[1],x[2] 分别指向第 0 行,第 1 行和第 2 行的第一个元素。如果 x 是一个整形数组,那么 x[0] x[1] x[2] 就是指向 int 类型的指针,而 x 则是指向指针的指针。2、接下来,接收用户输入的行列值。3、为了给这个 row 行、col 列的数组分...

C语言中,如何定义一个‘指针数组’,这个‘指针数组’专门用来存放‘数组...
数组指针定义int(*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int(*p)[4];\/\/该语句是定义一个数组指针,指向含4个...

C语言中定义动态数组的方法
long *buffer; \/\/ 定义一个动态数组 ...malloc... \/\/ 动态分配 1000 单元 ...realloc... \/\/ 再添加 分配 1000 单元 free( buffer ); \/\/ 取消 单元 === include <stdio.h> include <malloc.h> include <stdlib.h> void main( void ){ long *buffer;size_t size;if( (buffer...

C语言中定义数组时可以不定义长度吗,这样:uint8 array[]。看到一个...
C语言中可以定义个数不确定的动态数组,但不是用uint8 array[];这样来定义的,这样会报错。定义个数不确定的动态数组必须先声明一个指针,然后用malloc为这个指针分配一段连续的空间,然后退出程序的时候要记得使用free释放这些变量空间,否则会造成内存泄露。比如你要定义一个字符型的动态数组,可以先声明...

C语言实现简单动态数组
一个优秀的动态数组应具备以下功能:本文将用C语言实现一个支持存储int类型数据的简单动态数组。你只需要了解简单的结构体和指针使用,再加上一些耐心,就能构建出一个性能一般、功能不完善但可运行的动态数组。在动态数组中,数组结构通过结构体定义。它包括三个属性:count、capacity和nums。count表示当前...

C语言中怎么定义动态的数组长度
这个需求是符合C99标准,只要用支持C99标准的编译器就能通过编译。比如下面的代码,用GCC就能编译、运行。include <stdio.h> int main(){ int x = 2, y = 3;int arr[x][y];return 0;} 如果编译器不支持C99标准,可以用malloc(size_t )这个函数动态分配内存。

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

相似回答