C语言如何定义一个二维数组,并且通过输入n值来确认该数组中每行元素个数。
据我所知 数组大小不能通过参数(宏定义或者动态开辟可以)来控制 只能是定义一个足够大的数组 譬如 a[100][100] 然后你输入n 在用for循环给数组赋值时
for(int i = 0 ;i<(你要多少行);i++){
for(int j = 0;j<n(控制一行n个);j++){
赋值语句
}
}
int main()
{
int n,m;
int **p;
scanf("%d%d",&n,&m);
//n行m列的数组
p = (int **)malloc(sizeof(int *) * n);
for (int i = 0; i < 5; ++i)
{
p[i] = (int *)malloc(sizeof(int) * m);
}
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 2; ++j)
{
//输出数组每个元素地址
printf("%p\n", &p[i][j]);
}
}
for (int i = 0; i < 5; ++i)
free(p[i]);
free(p);
return 0;
}
如果我没理解错的话,你是想先定义一个未知大小的二位数组,然后scanf输入行列的大小,在C语言这需要动态分配malloc,最后记得free一下就行了,在C++的话用STL容器去存储会更方便一点。
int main()
{
int a[][];
int row,column;
scanf("%d%d",&row,&column);
a=(int**)malloc(sizeof(int*)*row);
for(i=0;i<row;i++)
{
a[i]=(int*)malloc(sizeof(int)*column);
}
for(i=0;i<row;i++)
{free(a[i]);}
free(a);
return 0;
}
好久没写了,不知道有没有问题