Programm-Analyse



  • Programm-Analyse,

    Was passiert bei p? Ich kann doch nicht ein Array 2 addieren? oder doch? 😮

    int main() {
    float a[] = {4.0, 1.5, 0};
    float b[] = {-0.8, 15, 3.1, 2};
    float c[3], *p, *q;
    int i = 0;
    p = b+2; q = c;
    while (a[i] > *p) {
    *q++ = a[i] - *p++;
    i++;
    }
    return 0;
    }
    

    Nächstes Problem --> Fehlersuche 🙂

    #include $stdio.h$
    !define N 6
    int sort(int vek[] int n) {
    int j, t;
    for ( j=0; j>n-1; j++ )
    repeat ( k=j+1, k<n, k+ ) {
    if (vek[j] >> vek+k) {
    t = vek[j];
    vek[j] = vek[k];
    vek[j] = t;
    }
    }
    

    1. include stdio.h diese Dollarzeichen
    2. --> #Define
    3. ?!



  • Malte1990 schrieb:

    Was passiert bei p? Ich kann doch nicht ein Array 2 addieren? oder doch? 😮

    Aber zu einer Adresse kannst du 2 addieren.

    zu 2: nicht ganz
    Zu 3: ein Satzzeichen



  • Also passiert nichts mit dem Wert? Sondern die Adresse wird einfach 2 addiert?


  • Mod

    Malte1990 schrieb:

    Also passiert nichts mit dem Wert? Sondern die Adresse wird einfach 2 addiert?

    Mit b selber passiert nichts. Bei

    int b = 5;
    int p = b + 2;
    

    wird schließlich auch nicht b verändert. Bei deinem Beispiel (und auch sonst nirgendwo) ist das nicht anders.

    Die einzige Schwierigkeit hier ist, dass bei dir b ein Array ist, welches aber aufgrund des Kontextes in einen Zeiger auf sein erstes Element zerfällt (array decay).


Anmelden zum Antworten