1

「main」で定義された構造体配列にメモリを割り当てる関数を作成しようとしています。問題は、私の関数が構造を認識していないようです。次のコードの何が問題になっていますか?

#include <math.h>
#include <stdio.h>
#include <stdlib.h>   

typedef struct typecomplex { float r; float i;  } complex;
complex *myfunction(int n);

int main (int argc, char *argv[]) {
    complex *result = myfunction(1000);
    exit(0);
}

...そして別のファイルで...

struct complex *myfunction(int n)  {
  complex *result = (complex *)malloc(n*sizeof(*complex));
  if(result==NULL) return(NULL);
      else return(result);
}
4

3 に答える 3

1

この宣言typedef struct _complex { float r; float i; } complex;を「その他」のファイルに移動します。この他のファイルは、 foo.hで宣言されたメソッドを実装する同等のfoo.cを持つfoo.hファイルでなければなりません。次に、foo.hmain.cファイルに追加するだけで、すべて正常に動作します。

于 2013-10-15T19:53:47.997 に答える
1

これは、適切にコンパイルされる修正を含むコードです。

typedef struct typecomplex { float r; float i;  } complex;
complex *myfunction(int n)  {          
  complex *result = (complex *)malloc(n*sizeof(complex)); //removed * from sizeof(*complex)
  if(result==NULL) return(NULL);
      else return(result);
}

int main (int argc, char *argv[]) {
    complex *result = myfunction(1000);
    exit(0);
}
于 2013-10-15T19:59:44.923 に答える