如何定义一个可变的二维数组,并把这个数组作为一个function的参数

来源:百度知道 编辑:UC知道 时间:2024/06/23 04:46:45
谢谢
例如,怎样定义一个n行2列的数组呢,我在赋值的时候并没有办法知道n是多少,只知道2列

#include "stdlib.h"

#include "stdio.h"

#include <malloc.h>

int main()
{

int i,j;

int (*p)[10];

//动态生成二维数组格式就是相当与p[10][10],如果想改,自己该里面
的参数,如果想定义n行2列就为:

//p=(int (*)[2])malloc(n*2*sizeof(int));

p=(int (*)[10])malloc(10*10*sizeof(int));

for(i=0;i<10;i++)

for(j=0;j<10;j++)

p[i][j]=i*j;

for(i=0;i<10;i++)

{

for(j=0;j<10;j++)

printf("%d,",p[i][j]);

printf("\n");

}
free(p);

return 0;

}

c语言里面,无法定义元素个数可变的数组
c++里面,也只有第一维是可变的,其他维的元素个数无法改变

比如 int n=10,*p=[n][4];

如果你没办法指定n,那么可以用动态内存的办法,它可以当成数组来使用的啊

如:
int *p=(int *)malloc(sizeof(int)*1024);
然后p可以当成数组来使用,如p[0]=0;
也可以int **pp=&p,pp就可以当成二维数组使用了,如pp[0][0]=0;

定义动态数组。

<mallo