Use a pointer to an array:
#define maxlinelength 10
char (*lines)[maxlinelength] = malloc( sizeof( char[maxlinelength] ) * numlines ) ;
lines[0][0] = 'A' ;
This requires that the inner most size, maxlinelength
, is constant.
You can avoid this limitation if you use pointers to variable-length arrays in which case the syntax remains the same and maxlinelength
doesn't have to be a constant. Standards that supports this feature, are C99 and optionally C11.
( A constant is a variable whose value is known at compile time.)
( And to clarify: sizeof( *lines )
is identical to sizeof( char[maxlinelength] )
)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…