Hi,
Dann poste doch mal die Problemstellung, denn so "ausse Lamäng" kann man da auch nicht viel zu sagen.
Also ursprünglich funktionierte das Übergeben eines mehrdimensionalen Arrays nicht so, wie ich mir das vorstellte.
Und wenn Du jetzt noch erklären würdest, wie Du Dir das vorgestellt hattest wäre das sehr hilfreich.
Aber eigentlich stört mich daran, dass ich in der Funktion mit Zeigern arbeiten muss, die die Variable außerhalb der Funktion beeinflussen könnte.
Also mal der Reihe nach.
Du hast ein 2d-Array
x_0,0 x_0,1 x_0,2 x_0,3
x_1,0 x_1,1 x_1,2 x_1,3
x_2,0 x_2,1 x_2,2 x_2,3
Das ist entweder global oder lokal. Was ist es genau?
Dann hast Du mindestens zwei Funktionen. In der einen wird das obige Array bearbeitet/erstellt und das Ergebnis einer anderen Funktion übergeben. Sind die beiden Funktionen getrennte Threads/Prozesse?
Jetzt möchtest Du aber wohl nicht das ganze Array übergeben, ist das korrekt? Das kannst Du nicht sinnvoll beschränken, das einfachste wäre es eine Kopie des gewünschten Teile zu erstellen und dann dieses zu übergeben. Das kostet etwas Speicher -- ist das in Ordnung oder bist Du da jetzt schon klamm?
Wenn "array" ein Zeiger auf das allererste Element ist, wie sieht dann ein zu übergebender Zeiger auf beispielsweise [2][3] aus, also dass die Funktion nur diesen einen Wert bekommt?
Ich frage das eigentlich nur aus Interesse.
Du solltest Dir mal 6.18 und Umgebung aus der C-FAQ vornehmen.
Ich brauchte nämlich nur die ersten beiden Elemente und bemerkte, dass es offensichtlich keine Probleme macht, wenn ich nur das verkürzte Array übergebe, aber es könnte natürlich auch nur Zufall gewesen sein?
Nein, es ist kein Zufall sondern alles vollkommen deterministisch ;-)
Wenn Du nur die ersten beiden Elemente benötigst, warum nimmst Du sie dann nicht? Alloziere genügend Speicher und übergib die Kopie (Nicht vergessen den Speicher wieder zu befreien, falls Du den dynamisch alloziert hast!).
so short
Christoph Zurnieden