auf das wievielte element zeigt der zeiger ?
-
wenn man nun einen zeiger auf ein element in einem mehrdimensionalen array hat..
..kann man dann irgendwie rauskriegen auf das wievielte element er zeigt,
ohne alle adressen zu vergleichen ? vieleicht von dem zeiger aus weiterrechnen der durch den arraynamen dargestellt wird (adresse des ersten wertes) ?
allerdings ist das bei mehrdemensionalen arrays in einer speziellen reihenfolge,
und wenn die elementmenge variiert ist es auch wieder käse.vielleicht komt man letztenendes um eine schleife zum abprüfen nicht drum rum.
ein weiterer fall bei dem man vielleicht nicht zwingend wissen welche nr ? ist:
zeiger zeigt auf array[1][dimension][?]
und soll nun auf array[x][dimension][?] zeigen.
-
wie findet man die elementanzahlen eines mehrdimensionalen arrays
während der laufzeit nur anhand des arrays herraus ?ich hab da auch schon etwas probiert aber bis jetzt hat es noch nicht so richtig hingehauen:
Memo1->Lines->Append(sizeof(verbindung)); Memo1->Lines->Append(sizeof(verbindung) / sizeof(verbindung[1][1][1][1][1])); Memo1->Lines->Append((sizeof(verbindung) / sizeof(verbindung[1][1][1][1][1])) / sizeof(verbindung[1][1][1][1])); Memo1->Lines->Append(((sizeof(verbindung) / sizeof(verbindung[1][1][1][1][1])) / sizeof(verbindung[1][1][1][1])) / sizeof(verbindung[1][1][1])); Memo1->Lines->Append((((sizeof(verbindung) / sizeof(verbindung[1][1][1][1][1])) / sizeof(verbindung[1][1][1][1])) / sizeof(verbindung[1][1][1])) / sizeof(verbindung[1][1]));
-
hmm das obere postinfg von mier sollte nicht in dem sein..
..könnte wer dieses und das obere löschen dann ist es wieder wie es sein soll.
-
Hallo
Ja das geht bei einem C-Array und nennt sich Pointer-Arithemik
int Array[10]; // Array int* P = &Array[5]; // Pointer auf ein Array-Element int Index = P - &Array[0]; // Berechnung des Index, Adresse vom ersten Element wird von Adresse von P abgezogenbis bald
akari
-
zwischen deinem und meinem posting davor hab ichs so gelöst:
// größte ausgaberaten übertragen // kann evtl. auch mit zeigeraritmetik gelöst werden // schleiferei nötig da *biggest_rates[quellnetz][bildbeispielnr][1] und [2] auf den quellindex zeigen (z.b. 1) for(int schicht=1; schicht<=schichtanzahl;++schicht) { for(int index=1; index<=objektanzahl[schichtanzahl];++index) { if(biggest_rates[quellnetz][bildbeispielnr][1]==&neuronkernfeuerrate[quellnetz][schicht][index]) { biggest_rates[zielnetz][bildbeispielnr][1]=&neuronkernfeuerrate[zielnetz][schicht][index]; // größte } else if(biggest_rates[quellnetz][bildbeispielnr][2]==&neuronkernfeuerrate[quellnetz][schicht][index]) // elseif weil der zeiger besonders bei einem einzelnen ausgabeindex nie auf die gleiche variablenadresse zeigt { biggest_rates[zielnetz][bildbeispielnr][2]=&neuronkernfeuerrate[zielnetz][schicht][index]; // zweitgrößte } } }ja den 2. kommentar hab ich dann nachräglich noch hinzugefügt.
beizeiten werd ich die zeigeraritmetik da wahrschienlich mal ausprobieren.