Struct Code umwandeln

OP #6050811
Lesenswert?

hallo zusammen,

gibt es einen Unterschied, ich den folgenden Code von
1
typedef struct { double x; double y; } berech;
2

3
berech c[2] = 
4

5
{ {0,0},
6
    {0.040508,8 },}
7

8

9

10
double interp( berech* c, double x, int n )
11
{
12
    int i;
13
    for( i = 0; i < n-1; i++ )
14
    { if ( c[i].x <= x && c[i+1].x >= x )
15
        {
16
    double difx = x - c[i].x;
17
    return double difn = c[i+1].x - c[i].x;
18
        }}
19
    return 0; 
20
}
zu änderen ?
1
struct berech { double x; double y;} ;
2

3
berech c[2] = 
4

5
{ {0,0},
6
    {0.040508,8 },}
7

8

9

10
double interp( berech c, double x, int n )
11
{
12
    int i;
13
    for( i = 0; i < n-1; i++ )
14
    { if ( c[i].x <= x && c[i+1].x >= x )
15
        {
16
    double difx = x - c[i].x;
17
    return double difn = c[i+1].x - c[i].x;
18
        }}
19
    return 0; 
20
}
Gast #6050824
Lesenswert?

Ja. Das zweite Codebeispiel wird einen Fehler verursachen, weil der Typ 
von 'berech' nicht bekannt ist bzw. weil an dieser Stelle ein Typname 
erwartet wird und nicht der Name einer Struktur.

Du hast in dem zweiten Code lediglich eine Struktur benannt, aber damit 
noch keinen neuen Typ definiert.

Korrekt müsste der zweite Code sein:
1
struct berech { double x; double y;};
2

3
struct berech c[2]  = 
4

5
{ {0,0},
6
    {0.040508,8 },};
7

8
...

Am besten sowas einfach mal durch den Compiler jagen. Das erspart viele 
Fragen. :-)
#6051620
Lesenswert?

Theor schrieb:
> Ja. Das zweite Codebeispiel wird einen Fehler verursachen, weil der Typ
> von 'berech' nicht bekannt ist bzw. weil an dieser Stelle ein Typname
> erwartet wird und nicht der Name einer Struktur.

Ausserdem kriegt die Funktion interp() im 2. Beispiel kein Zeiger auf 
dem Array sondern lediglich das erste Element vom Array als Parameter 
geliefert. Damit lässt sich die Indizierung also gar nicht machen. Der 
Compiler wird gemeckert haben.
#6053168
Lesenswert?

Cyblord -. schrieb:
> Läuft bei euch ein Wettbewerb über die blödesten Funktionsnamen?

Ich hab mich eher gefragt, ob das ein Wettberwerb im "finde die 
Unterschiede" ist.

Theor schrieb:
> Genau. Siehe
> Beitrag "Re: Struct Code umwandeln"
>
> "Du hast in dem zweiten Code lediglich eine Struktur benannt, aber damit
> noch keinen neuen Typ definiert."

Einen Typ hat er damit schon definiert. Aber der heißt eben nicht 
"berech", sondern "struct berech".

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren