Arrays übergeben
-
Moin
ich probier jetzt seit einer halben Stunde irgendwie an eine funktion Array zu übergeben:
Die Funktion soll den Spaß annehmen:
void init(char *name[], short *buffer[])
{
}und hier soll das ganze "abgschickt" werden
const short buffer[] = {0,0};
const char name[] = "LeafGL";
init(name, buffer);und dazu kommt das buffer als Zeiger oder Referenz übergeben werden muss
das Teil wird später rießen groß
-
ich glaub das ging so
init(&name, &buffer);
-
hi,
versuch mal so:void init( const char *name,const short *buffer) // nicht *name[] sondern *name { } int main(int argc, char **argv) { const short buffer[] = {0,0}; // const ????? const char name[] = "LeafGL"; // dann koennen die Werten im Funktion init(name, buffer); // nicht verändert werden return 0; }
damit übergibst du die Adressen von buffer und name (aus main) an die Funktion init().
in der Funktion kannst du auf die Arrays mittels name und buffer zugreifen, die Inhalte ändern kannst du aber nicht da die const sind.
-
danke das funktioniert schonmal
nächstes Problem:wenn ich nun in der init Funktion:
init(const char *name,const short *buffer)
{
}den buffer global machen will, so das er in der ganzen Datei gilt
wie geht das?ich hab einfach mal das probiert:
short buffer[10];
short *pbuffer = buffer;init(const char *name,const short *buffe)
{
*pbuffer = *buffe
}hab auch schon nen Haufen anderes Zeug probiert, aber irgendwie ist das mit den Zeigern und Referenzen ein totales durcheinander
-
hi,
also wenn du den buffer global machst:
#include <stdio.h> short buffer[10]; void init(const char * name) { // auf buffer kannst jetzt einfach so zugreifen da global ist // also du brauchst auch keine Adresse mehr zu übergeben } int main( int argc, char *argv[]) { const char name[] = "LeafGL"; // dann koennen die Werten im Funktion init(name); // nicht verändert werden return 0; }
Erkläre lieber was du vor hast, dann kann mann ja sehen was in deinem Fall auch besser passt, vieleicht ist es doch besser, den buffer local zu deklarieren und dann die Adressen/Zeiger zu übegeben???
Oder oder oder?????
-
also nochmal von vorn:
ich hab eine Datei die ist das letztendliche Programm
und eine andere die ist die Grafikschnittstellein dem eigentlichen Programm wird berechnet welcher Pixel welche Farbe haben muss
und dieser rießen Array muss dann irgendwie zur Schnittstelle gelangen, ohne das ich ihn komplett kopieren muss (da das viel zu lange dauert)also übergebe ich von der eigentlichen Datei den Zeiger des Arrays an eine Funktion der anderen Datei
die Funktion muss nun irgendwie diesen Buffer global machen, damit der überall in der Schnittstelle nutzbar ist
das hab ich bis jetzt aber nur geschafft, in dem ich den ganzen Array kopiert hab
-
http://www.ecst.csuchico.edu/~beej/guide/ipc/
Beej's Guide to Unix IPCoder willst du shared memory?
du weisst, jeder prozess hat eigenen virtuellen speicher. ein pointer kann fuer jeden prozess was anderes bedeuten.
-
was soll mir das denn bringen?
das muss doch irgendwie mit Zeigern oder Referenzen funktionieren
-
also was nun, hast du zwei programme oder eines?
hast du ahnung von pointern? wenn nicht, guck dir den pointer-artikel an.
-
ich red von zwei Dateien (weiß nicht wie man das fachlich ausdrückt)
die ich aber in eine exe kompiliere
-
nennen wir die mal "module" (kenne die richtige bezeichnung auch nicht).
hast du ahnung von pointern? wie lange machst du schon c?
-
soo lange mach ich c noch nich, das Problem is aber eher das ich davor Java gemacht hab
und jetzt verwechsel ich alles
versteh allerdings nich was das mit der Frage zu tun hatirgendwo muss es doch ein Code Stück zu finden geben bei dem jemand einfach nur einen Array las Zeiger oder Referenz übergibt
hat keiner sowas?
-
dein problem ist unklar
meinst du das: http://www.pronix.de/pronix-726.html