例一、程序运行中输入静态数组维的大小
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
scanf("%d",&i); //输入第一维大小
scanf("%d",&j); //输入第二维大小
// int a[i][j]={{1,2,3},{4,5,6},{7,8,0}}; //variable-sized object `a' may not be initialized
int a[i][j]; //变量大小的对象a 不可以被初始化 对一维数组 int a[i]={0} 初始化也不行
getchar(); //但也可这样赋值 哈哈
for(int p=1;p<=i;p++)
{
for(int q=1;q<=j;q++)
{
scanf("%d",&a[p][q]);
}
printf("/n");
}
printf("output the array:/n");
for(int p=1;p<=i;p++)
{
for(int q=1;q<=j;q++)
{
printf("%4d",a[p][q]);
}
printf("/n");
}
system("pause");
getchar();
return 0;
}
例二、动态分配和传递二维数组
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
int **a;
int nrows,ncolumns;
int printarray(int **a,int nrows,int ncolumns);
printf("Input rows length: ");
scanf("%d",&nrows);
printf("Input columns length:");
scanf("%d",&ncolumns);
printf("/n");
a=(int**)malloc(nrows*sizeof(int *)); //int * a为指针的指针
for(i=0;i<nrows;i++)
{
a[i]=(int*)malloc(ncolumns*sizeof(int)); //a[i]为指向int的指针
for(j=0;j<ncolumns;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("output the array:/n");
printarray(a,nrows,ncolumns); //动态二维数组的传递
for(i=0;i<nrows;i++) //释放指针指向空间
free(a[i]);
free(a);
printf("/n");
system("pause");
return 0;
}
int printarray(int **a,int nrows,int ncolumns)
{
for(int i=0; i<nrows;i++)
{
for(int j=0;j<ncolumns;j++)
{
printf("%d ",a[i][j]);
}
printf("/n");
}
}
//大家如有其他方法 跟帖一起讨论 O(∩_∩)O~