Zum Inhalt springen

Swap-Funktion in Arrays


Metalmind

Empfohlene Beiträge

Moin,

ich möchte eine swap-Funktion, die 2 Felder eines Arrays austauscht machen,

meine Funktion:

void swap(int *a, int *

{       int tmp;

        tmp  =*a;

        *a =*b;

        *b =tmp;

        return;

}

...


int Nummer[100];[/code]


mit dieser möchte ich nun die Felder Nummer[0] und Nummer[1] tauschen

[CODE]swap(Nummer[0],Nummer[1]);

bekomme allerdings den Fehler: "warning: passing arg 1 of `swap' makes pointer from integer without a cast", dasselbe für argument 2.

Kann mir jemand sagen wie ich dieses Problem in den Griff bekomme?

Danke und Gruß

Metalmind

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei mir hat sich gerade ein Problem ergeben, das zum Thema passt, und zwar möchte ich nach diesem Schema eine swap-Funktion für zweidimensionale char Arrays erstellen. Mein Beispiel:

ich habe ein Array "char Bezeichnung[100][20];

und möchte in diesem Array nun Position Bezeichnung[0] und Bezeichnung[1] tauschen, der Kopf dafür sieht so aus:

void swap(int *array1, int *array2)    //tausche Array 1 und 2
Könnte mir an dieser Stelle bitte jemand beim basteln helfen, ich habe es nach dem Schema:
int *tmp;

strcpy(tmp,Bezeichnung[j]);

strcpy(Bezeichnung[j],Bezeichnung[i]);

strcpy(Bezeichnung[i],tmp);

versucht, allerding erhalte ich dabei massenweise Fehlermeldungen, weiß jemand wie ich diese Funktion zum laufen kriege?

Gruß

Metalmind

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sorry, war mehr oder weniger "Reflex", natürlich heißt es überall char*

diese Funktion versuche ich dann für das Array:

char Name[100][20];

laenge=10;

...

swap2(Name[0],Name[1]);


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

	{

	printf("%s\n",Name[i]);

	}
mit dieser Funktion:
void swap2(char *array1, char *array2)    //tauscht Variable a und b       

{   

	char *tmp;

    strcpy(tmp,array1);

    strcpy(array1,array2);

    strcpy(array2,tmp);

    return;

}

zu verwenden

Bearbeitet von Metalmind
Link zu diesem Kommentar
Auf anderen Seiten teilen

char *tmp;

Das ist ein sogenannter uninitialisierter Zeiger.

Der zeigt (weil du bei der Definition nichts anderes angegeben hast) auf irgendeine Speicheradresse. Dass du dabei zufällig eine Adresse erwischst, an die du deine Texte kopieren kannst, ist unwahrscheinlich.

Du willst Arrays tauschen, also sollte deine Zwischenspeicher-Variable auch ein Array sein, natürlich in ausreichender Größe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

wann genau muss man den Speicher denn wieder frei geben
Man sollte den Speicher freigeben, wenn man ihn nicht mehr braucht. In deinem Fall wäre das vor der return-Anweisung in deiner Tausch-Funktion.

tmp = (char*) malloc(laenge*20*sizeof(char));

Ich hatte dich in deinem "malloc-Anomalie"-Thread schon darauf hingewiesen, dass du den Rückgabewert von malloc nicht casten sollst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum überhaupt dynamische Speicherallokation?

Ganz so nebenbei versteh ich auch nicht, warum laenge * 20...

Bei char Name[100][20] hab ich 20 Zeichenketten á 99 (100 - ZKEKZ) Zeichen, da reicht doch statische Allokation mit statischer Größe (100) bzw. bzw. dynamischer Größe.

20 * laenge (unter der Annahme, dass laenge=10) wäre doch 200 und ist dann doppelt so groß wie ein einzelner string.

Speicherfresser olé. :floet:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...