komplexvariablen oder einzelne?



  • Berschoben nach ANSI-C



  • 1. Wieso kannst du nur 2 Zahlen speichern?
    hmmm:

    int zahl[2];
    zahl[0] = 23;
    zahl[1] = 12345;
    zahl[2] = 123456; /* Undefiniertes Verhalten */
    

    2. Was verbraucht weniger Platz?

    int zahl[2]; /* Zwei Int-Variablen */
    
    int zahl1;
    int zahl2;
    int zahl3; /* Drei Int-Variablen */
    

    Der Unterschied ist doch ersichtlich 😃

    3. Startinitialisierung

    int zahl[2];
    zahl[0] = 1;
    zahl[1] = 2;
    /* Jetzt haben die Variablen die Werte 1 und 2. Bis du sie wieder veränderst oder das Programm beendet wird. */
    


  • @ gary: also is es immer so, dass die zweite zahl in der reihe spinnt? wenn ja is das ziemlich hinderlich für leute wie mich ^^.
    und das mit dem speicherplatz ... also verbraucht

    int zahl[1];
    

    genauso viel platz wie

    int zahl1;
    int zahl2;
    

    ?



  • Die Zahl in den Arrayklammern gibt die Zahl der Elemente an.

    PS: Mal unter uns, stellst du dich absichtlich so an?



  • also nochmal:
    mit

    int array[3];
    

    erstellt man ein array mit länge 3!!!
    aber der computer zählt von 0 an!
    das heisst das erste element ist
    array[0]
    und das letzte
    array[2]



  • Ich krieg gleich nen Komplex, meinst du mit Komplexvariable Array?



  • ich weiss ich frag ziemlich oft sachen nach, die offensichtlich schon erklärt sind ^^. nein sorry für das nachfragen, aber ich wollts halt noch mal genau wissen. (thx für die ausdauer ^^ )
    trotzdem nochmal die frage: macht wirklich jede 2te zahl in der reihe, was sie will?



  • Original erstellt von SirNoname:
    trotzdem nochmal die frage: macht wirklich jede 2te zahl in der reihe, was sie will?

    NEIN!

    int array[2] legt ein array von 2 (zwei) elementen an. was auch sonst?
    array[0] - ist das erste element
    array[1] - ist das zweite element
    array[2] - ist das dritte element

    und jetzt erklär mir mal warum array[2] einen fehler verursacht.



  • ja ... das hab ich ja alles verstanden ....

    ich zitiere mal Gary:

    int zahl[2];
    zahl[0] = 23;
    zahl[1] = 12345;
    zahl[2] = 123456; /* Undefiniertes Verhalten */
    

    bei "zahl[2]" meint er "Undefiniertes Verhalten", was ich auch beobachtet habe (bei mir war es aber nicht die 2te, sondern die 5. oder 6. zahl in der reihe).



  • Okay, hat sich jetzt alles geklärt oder hast du immer noch ein Problem damit das zu verstehen? :o



  • Original erstellt von SirNoname:
    **
    bei "zahl[2]" meint er "Undefiniertes Verhalten", was ich auch beobachtet habe (bei mir war es aber nicht die 2te, sondern die 5. oder 6. zahl in der reihe).**

    undefiniertes verhalten heisst nicht das es nicht funktioniert aber wenn es das tut isses zufall. anstatt der 5. oder 6. könnte der fehler auch bei der 10000. auftreten



  • na bitte ... das wollt ich wissen! thx @ japro! ^^ ich will das ja nich ins extrem treiben aber wozu is das dann nütze wenn`s im endefekt eh bloss aufm zufallsprinzip beruht?! ich mein das kann doch nich so nach dem motto "jaja ... versuch`s einfach" funktionieren ....



  • Wie wärs mit Gehirn anschalten, das ist ja nicht mehr feierlich was du hier ablieferst. Es ist EIN FEHLER, auf ein Arrayelement zuzugreifen, was AUSSERHALB des Arrays liegt.



  • es ist nicht nach dem zufallsprinzip solang du nur auf elemente zugreiffst die innerhalb der angegebnenen grösse sind iss alles in ordnung und es is klar was passiert... nur wenn du auf elemente ausserhalb des bereiches zugrieffst ist ist das verhalten undefiniert.



  • Original erstellt von SirNoname:
    na bitte ... das wollt ich wissen! thx @ japro! ^^ ich will das ja nich ins extrem treiben aber wozu is das dann nütze wenn`s im endefekt eh bloss aufm zufallsprinzip beruht?! ich mein das kann doch nich so nach dem motto "jaja ... versuch`s einfach" funktionieren ....

    ich zitiere mich einmal und hebe ein bisschen hervor:

    int array[2] legt ein array von 2 (zwei) elementen an. was auch sonst?
    array[0] - ist das erste element
    array[1] - ist das zweite element
    array[2] - ist das dritte element

    was passiert wenn du einen leiter die 20 stufen hat bis zur 30. stufe raufkletterst?

    du fällst runter. warum sollte es bei der programmierung anders sein. ein array mit 2 elemnten kann kein 3. beinhalten.



  • ich will euch ja nicht zu nahe treten aber ich denke soviel ahnung hab ich dann doch dass ich nicht "die 30te stufe" auf einer "20er leiter" erklimme. ich hab den bereich des arrays sogar zu testzwecken um einiges grösser gemacht als benötigt, nur is der fehler dann trotzdem noch aufgetreten.
    und das mit meinem "(bei mir war es aber nicht die 2te, sondern die 5. oder 6. zahl in der reihe)" war nicht auf DIESE reihe bezogen, sondern auf ein array mit entsprechender elementanzahl.
    kurz: ich leg ein array an, initialisiere JEDES element (ja, auch "array[0]"!), will einfach nur die anfangsinitialisierung abrufen ABER ES KLAPPT NICHT, da nur unsinn dabei herauskommt.
    naja ... is ja jetz auch egal, jedenfalls habt ihr mir im großen und ganzen doch geholfen. das problem werd ich denk ich nich mehr haben, da ich in dem stress n andren lösungsweg gefunden hab. und das mit dem fehler: ich hab gelernt, dass computer manchmal sachen machen, die sich jeglicher logik wiedersetzen. (oder: "der fehler liegt gar nich da, wo man ihn vermutet")



  • Original erstellt von SirNoname:
    ich will euch ja nicht zu nahe treten aber ich denke soviel ahnung hab ich dann doch dass ich nicht "die 30te stufe" auf einer "20er leiter" erklimme. ich hab den bereich des arrays sogar zu testzwecken um einiges grösser gemacht als benötigt, nur is der fehler dann trotzdem noch aufgetreten.
    und das mit meinem "(bei mir war es aber nicht die 2te, sondern die 5. oder 6. zahl in der reihe)" war nicht auf DIESE reihe bezogen, sondern auf ein array mit entsprechender elementanzahl.
    kurz: ich leg ein array an, initialisiere JEDES element (ja, auch "array[0]"!), will einfach nur die anfangsinitialisierung abrufen ABER ES KLAPPT NICHT, da nur unsinn dabei herauskommt.

    dann gib n beispiel wo zB

    int array[5];
    array[3]=1;
    abstürzt



  • wie gesagt, ich weiss nich genau, wo der fehler lag. is mir im moment auch recht egal, da ich das prob anders löse. vielleicht hab ich ja auch irgendwas dummes anderes falsch gemacht (wär nich das erste mal) ... ka.
    trotzdem nochmals danke für eure hilfe und die vielen beiträge 🙂

    [ Dieser Beitrag wurde am 11.02.2003 um 12:08 Uhr von SirNoname editiert. ]



  • Original erstellt von SirNoname:
    [QB]"(bei mir war es aber nicht die 2te, sondern die 5. oder 6. zahl in der reihe)" war nicht auf DIESE reihe bezogen, sondern auf ein array mit entsprechender elementanzahl.

    Falls du mit entsprechend das meinst, was ich glaube:

    int array[2]; 
    array[2] = 234;
    

    Das ist falsch.
    Du kannst nicht auf array[2] zugreifen, weil das ein ganz anderer Speicherbereich ist.

    Poste doch mal den Quelltext, wo der Fehler drin ist.
    Ich will auf Fehlersuche gehen 🕶



  • *japro schwenkt die weisse fahne*


Anmelden zum Antworten