1

複雑なdoubleを含む2D動的配列を初期化しようとしています。このエラーメッセージが何をするように指示しているのか理解できず、どこにも見つかりません。

#include <complex.h> 
...
int main( int argc, char *argv[] ) {
    complex double **A;
    FILE *inputFile;
    int i;
    double numRow, numCol;

    inputFile = fopen( "input.txt", "r" );
    fscanf( inputFile, "%lf %lf", &numRow, &numCol );

    A = ((complex double)**)malloc( numRow * sizeof( (complex double)* ) );
    for( i = 0; i < numCol ; i++ ) {
        A[i] = ((complex double)*)malloc( NC * sizeof( (complex double) ) );


    for( i = 0; i < m; ++i ) {
        free( A[i] );
    }
    free( A );

私が得ているエラーは、mallocを呼び出す2つの行から来ています。

gewhpp.c:58:26: error: expected expression before â)â token
gewhpp.c:60:29: error: expected expression before â)â token
4

2 に答える 2

2

complex double次のように行を編集してみてください。

A = (complex double**)malloc( numRow * sizeof(complex double* ));

「complexdouble」を角かっこで囲んでから「*」を付ける必要はありません。

(中かっこには他にもいくつかエラーがありますが、これは単なるコードスニペットであるためだと思います...)

于 2012-10-19T01:33:41.557 に答える
2
A = ((complex double)**)malloc( numRow * sizeof( (complex double)* ) );
for( i = 0; i < numCol ; i++ ) {
    A[i] = ((complex double)*)malloc( NC * sizeof( (complex double) ) );

までクリーンアップすることができます

A = malloc(numRow * sizeof *A);
if (A)
{
  for (i = 0; i < numCol; i++)
  {
    A[i] = malloc(NC * sizeof *A[i]);
    ...

パレンの配置がタックスに噛み付く可能性は低くなります。

の結果をCでキャストする必要はありません(C ++は別の話です)。また、型名だけでなく、式に演算子をmalloc適用できます。sizeofのタイプは*Aですのでcomplex double *、のサイズはのサイズ*Aと同じです(complex double *)

于 2012-10-19T01:54:34.850 に答える