c和c++动态数组的实现
- #include<stdio.h>
- #include<malloc.h>
- #include<stdlib.h>
- int *ywshuzumalloc(int n) //一维数组分配
- {
- int *a;
- a=(int *)malloc(sizeof(int)*n);
- return a;
- }
- int **ewshuzumalloc(int m,int n) //二维数组分配
- {
- int **a;
- int i;
- a=(int **)malloc(m*sizeof(int *));
- for (i=0;i<m;i++)
- a=(int *)malloc(n*sizeof(int));
- return a;
- }
- int ***swshuzumalloc(int m,int n,int o) //三维数组分配
- {
- int ***a;
- int i,j;
- a=(int ***)malloc(m*sizeof(int **));
- for(i=0;i<m;i++)
- a=(int **)malloc(n*sizeof(int *));
- for(i=0;i<m;i++)
- {
- for(j=0;j<n;j++)
- a[j]=(int *)malloc(o*sizeof(int));
- }
- return a;
- }
- void main()
- {
- int *a;
- int **b;
- int ***c;
- int i,j,k,m,n,o;
- int lenght;
- printf("请输入动态分配一维数组的个数:\n");
- scanf("%d",&n);
- a=ywshuzumalloc(n);
- for(i=0;i<n;i++)
- {
- a=i+1;
- printf("%d ",a);
- }
- printf("\n");
- lenght=n;
- printf("该数组的长度是: %d",lenght);
- printf("\n");
- printf("请输入动态分配二维数组的个数:\n");
- scanf("%d %d",&m,&n);
- b=ewshuzumalloc(m,n);
- for(i=0;i<m;i++)
- {
- for(j=0;j<n;j++)
- {
- b[j]=(i+1)*10+j+1;
- printf("%d ",b[j]);
- }
- printf("\n");
- }
- printf("\n");
- lenght=m*n;
- printf("该数组的长度是: %d",lenght);
- printf("\n");
- printf("请输入动态分配三维数组的个数:\n");
- scanf("%d %d %d",&m,&n,&o);
- c=swshuzumalloc(m,n,o);
- for(i=0;i<m;i++)
- {
- for(j=0;j<n;j++)
- {
-
for(k=0;k
{ - c[j][k]=(i+1)*100+(j+1)*10+k+1;
- printf("%d ",c[j][k]);
- }
- printf("\n");
- }
- printf("\n");
- }
- printf("\n");
- lenght=m*n*o;
- printf("该数组的长度是: %d",lenght);
- printf("\n");