以下代码为DDLA功能的简单演示,可将其后的接口头文件和实现源代码编译后运行。 #include <stdio.h> #include "DynamicDLA.h" void func( int** ); int main( void ) { int i, j, k; int **p1 = ( int** )new_a( sizeof( int ), 2, 7, 5 ); int **p2 = ( int** )new_a( sizeof( int ), 2, 15, 25 ); int ***p3; for( i = 0; i < 7; ++i ) for( j = 0; j < 5; ++j ) p1[i][j] = j; printf( "/np1数组的内容(7x5):/n/n" ); for( i = 0; i < 7; ++i ) { for( j = 0; j < 5; ++j ) printf( "%d ", p1[i][j] ); printf( "/n" ); } p1 = ( int** )resize_a( p1, 2, 5, 7 ); printf( "/np1数组变形后的内容(5x7):/n/n" ); for( i = 0; i < 5; ++i ) { for( j = 0; j < 7; ++j ) printf( "%d ", p1[i][j] ); printf( "/n" ); } p3 = ( int*** )resize_a( p1, 3, 4, 5, 7 ); printf( "/np1数组变成3维后的内容(4x5x7) 超出部分可能为乱数:/n/n" ); for( i = 0; i < 4; ++i ) { for( j = 0; j < 5; ++j ) { for( k = 0; k < 7; ++k ) printf( "%d ", p3[i][j][k] ); printf( "/n" ); } printf( "/n" ); } p1 = ( int** )resize_a( p3, 2, 7, 5 ); printf( "/np1数组变回2维后的内容(7x5):/n/n" ); for( i = 0; i < 7; ++i ) { for( j = 0; j < 5; ++j ) printf( "%d ", p1[i][j] ); printf( "/n" ); } printf( "/n" ); printf( "p1的长度:%d/n", sizeof_a( p1 ) ); printf( "p1第一维p1[0]的长度:%d/n", sizeof_a( p1[0] ) ); printf( "p2的长度:%d/n", sizeof_a( p2 ) ); printf( "p2第一维p2[0]的长度:%d/n", sizeof_a( p2[0] ) ); printf( "/n" ); func( p1 ); func( p2 ); delete_a( p1 ); delete_a( p2 ); return 0; } void func( int **p ) { if( sizeof_a( p ) / sizeof_a( p[0] ) == 7 ) { printf( "p1在func内的长度:%d/n", sizeof_a( p ) ); printf( "p1第一维p1[0]在func内的长度:%d/n", sizeof_a( p[0] ) ); } else { printf( "p2在func内的长度:%d/n", sizeof_a( p ) ); printf( "p2第一维p2[0]在func内的长度:%d/n", sizeof_a( p[0] ) ); } printf( "/n" ); }