Komplexe Zahlen als Strukt

0664jester

Mitglied
Ich habe hier diese Funktionen geschrieben.
bei void calc bin ich mir nicht sicher ob ich pointer soll nehmen für (complex *complex, float *r, float *phi), oder nicht?




Code:
#include <stdio.h>
//
///creat struct for 
//
typedef struct _complex_
{
  float real_;
  float imag_;
} Complex;

void calc(Complex *complex, float *r, float *phi) 
{
  *r = sqrt (complex -> real_ * complex -> real_ + complex -> imag_ *
            complex -> imag_);                                                                             // r=sqrt(a²+b²)
            
  *phi = atan(complex -> imag_ / complex -> real_);                                 //arctan(b/a)
}  

void output(const Complex *complex)
{
  float r;
  float phi;
  calc(complex, &r, &phi);
  printf("%f, %f\n", r, phi);
}

int main ()
...

Gruß,
jester
 
Hi

Du meinst hier?
C++:
void calc(Complex *complex, float *r, float *phi)
Für r und phi sind die Pointer nötig, complex könnte man auch ohne machen (aber besser mit).
 
Ich habe einfach die pointer gemacht, da ich mir gedacht habe, dass ich vllt andere zahlen zuweisen möchte... oder gibt es da einen besseren grund?
 
Du "denkst" nur, dass du "vielleicht" Zahlen zuweisen willst?
Warum entscheidest du dich dann nicht? :rolleyes:

Gründe:
a) Variablen ohne Pointer werden als Kopie übergeben,
Änderungen wirken sich also nicht auf die Originalvariable aus.
b) Bei großen Variablen (struct-Instanzen etc.) kann es dadurch schneller werden,
und es wird weniger Speicher verbraucht
c) In bestimmten Situationen ist es problematisch, ein Objekt zu kopieren, daher besser ohne Kopie
usw..
 

Neue Beiträge

Zurück