引用第1楼windsheng4于2006-11-27 19:53发表的:float **a,*p;for ( int i=0;i<3;i++){p=*a+i for(int j=0;j<3;j++) { t=(float *)malloc(sizeof(float)*3);.......
#include <stdio.h>#include <malloc.h>int main(){ int **a; /*注意这里是指针的指针*/ int *p; int m; int n; int i, j, c=0; do { printf( "Input m=" ); scanf( "%d", &m ); } while( m < 1 ); do { printf( "Input n=" ); scanf( "%d", &n ); } while( n < 1 ); /************************************************ * 以下四行动态分配数组 *************************************************/ a = ( int ** )malloc( m * sizeof( int * ) ); /* 这句分配的是一个指针数组 也就是说,a 指向的这段内存空间里存放的是 指针的值 */ for( i = 0; i < m; i++ ) { p = ( int * )malloc( n * sizeof( int ) ); /*这句分配的才是数组*/ a[ i ] = p; /*给a的元素赋值,使它等于新分配的内存的地址*/ } /*************************************************/ /************************************************* 这下面的就和一般的二维数组操作一样了 */ for( i = 0; i < m; i++ ) { for( j = 0; j < n; j++ ) a[i][j] = ++c; } for( i = 0; i < m; i++ ) { for( j = 0; j < n; j++ ) printf( "a[%d][%d]=%-3d ", i,j , a[i][j] ); printf( "\n" ); } /************************************************** 释放内存空间 */ for( i = 0; i < m; i++ ) free( a[i] ); free( a ); return 0;}