Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hallo,

warum verhält sich die variable i im folgenden code so komisch ?

sie sollte jeweils eigentlich um 1 erhöht werden, erhöht sich bei mir aber um 1millionirgendwas. wenn ich double sum[1]; zu double sum[2]; ändere klappt alles. bin anfänger und deswegen für eine klärung sehr dankbar.

#include <cstdlib>

#include <iostream>

#include <math.h>

#include <stdio.h>

using namespace std;

// Schwerpunkt einer Punktschar

// pn=Anzahl der Punkte

void fc_splist(double feld[][2], int pn)

{

int i=0;

double sum[1];

sum[0]=0, sum[1]=0;

for (i=0; i<pn; i++)

{ cout << "\ni: " << i;

sum[0]=sum[0]+feld[0];

sum[1]=sum[1]+feld[1];

}//for

sum[0]=sum[0]/pn;

sum[1]=sum[1]/pn;

cout << "\nxs:" << sum[0] << " ys:" << sum[1] << "\n";

cout << "\ni: " << i;

}

int main()

{

double b [3][2]={

{1,2},

{3,4},

{10.9,12.3}

};

fc_splist(b,3);

system("PAUSE");

return 1;

}

Geschrieben
warum nicht ?
Weil es ein Array mit nur einem Element ist. sum[2] wäre das zweite Element. Wenn dein Array kein zweites Element hat, darfst du nicht darauf zugreifen.

Wenn du ein Array als "typ name[x]" deklarierst, dann ist der größte erlaubte Index für den Zugriff x-1, nicht x.

und warum hat es einfluss auf i ?

Dein Code erzeugt undefiniertes Verhalten, insofern ist es ziemlich sinnlos, sich darüber Gedanken zu machen, was passiert, weil alles passieren könnte. Der Code könnte sogar funktionieren.

Tatsächlich wird es wohl so sein, dass i im Speicher hinter sum liegt. Indem du auf sum hinter dessen Ende zugreifst, pfuschst du im Speicherbereich von i herum.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...