1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Mitglieder
  3. Harry1

Beiträge von Harry1

  • Dynamische Speicherverwaltung und Strukturen in C

    • Harry1
    • 27. August 2012 um 11:38

    Ok ich glaube ich habe es nun selbst entwickelt bekommen würde mich trotzdem freuen falls jemand nochmal die Richtigkeit überprüfen könnte ;).

    C
    #include <stdio.h>
    #include <stdlib.h>
    
    
    
    
    struct test_struct {
    	int a;
    	float b;
    	char *c;
    };
    typedef struct test_struct mystruct;
    
    
    
    
    int main() {
    	mystruct *pm;
    	pm = (mystruct*) malloc(20 * sizeof(mystruct));
    	free(pm);
    
    
    
    
    	mystruct *str[20];
    
    
    
    
    	int i;
    	for (i = 0; i < 20; i++) {
    		str[i] = (mystruct*) malloc(100 * sizeof(mystruct));
    		int j;
    		for (j = 0; j < 100; j++) {
    
    
    
    
    			str[i][j].a = 1;
    			str[i][j].b = 2.0;
    			str[i][j].c = (char*) malloc(sizeof(char) * 100);
    			str[i][j].c[0] = 't';
    			str[i][j].c[1] = 'e';
    			str[i][j].c[2] = 's';
    			str[i][j].c[3] = 't';
    			str[i][j].c[4] = '\0';
    		}
    	}
    
    
    
    
    	for (i = 0; i < 20; i++) {
    		int j;
    		for (j = 0; j < 100; j++) {
    
    
    
    
    			free(str[i][j].c);
    		}
    		free(str[i]);
    	}
    	return 0;
    }
    Alles anzeigen
  • Dynamische Speicherverwaltung und Strukturen in C

    • Harry1
    • 27. August 2012 um 11:24

    Hallo, ich studiere E-Technik im 2. Semester, lerne gerade für unsere Informatik Klausur, in der wir die Programmiersprache C behandeln und wundere mich über eine Lösung, die ich mit meinem zwar mit meinem Übungsgruppenleiter ausgearbeitet habe jedoch meiner Meinung nach ein Teil fehlt.
    Hier erst einmal die Aufgabe:


    • Legen Sie eine Struktur test_struct an, die als Elemente die Variablen int a, float b, char *c enthaelt.
    • Definieren Sie mittels typedef einen neuen Datentypen mystruct fuer diese Struktur.
    • Deklarieren Sie einen Pointer vom Typ mystruct. Allozieren Sie nun dynamisch Speicher fuer 20 Elemente vom Typ mystruct und lassen Sie den soeben deklarierten Pointer auf diesen allozierten Speicherbereich zeigen.
    • Geben Sie den Speicherbereich wieder frei.
    • Legen Sie nun ein Array mit Platz fuer 20 Pointer vom Typ mystruct an. Initialisieren sie diese 20 Pointer indem Sie Sie nun mit Hilfe einer Schleife fuer jeden dieser Pointer Platz fuer 100 Elemente vom Typ mystruct allozieren. Allozieren sie ferner fuer den Pointer char *c jeder Struktur Speicherplatz fuer 100 Elemente vom Typ char.
    • Initialisieren Sie fuer alle eben allozierten Elemente die Variable a mit 1, die Variable b mit 2.0 und c mit "test".
    • Geben Sie den allozierten Speicherbereich wieder frei.

      Problem an dem folgenden Code ist, das ich bei Punkt 5. keinen Speicherbereich für char *c alloziere. Jedoch bin ich ein wenig hilflos an welcher Stelle ich dies tun sollte.
      Hier meine Lösung:

      C
      #include <stdio.h>
      #include <stdlib.h>
      int main() {
          struct test_struct {
              int a;
              float b;
              char *c;
          };
          typedef struct test_struct mystruct;
      
      
      
      
          mystruct *pm;
          pm = (mystruct*) malloc(20 * sizeof(mystruct));
          free(pm);
      
      
      
      
          mystruct *str[20];
      
      
      
      
          int i;
          for (i = 0; i < 20; i++) {
              str[i] = (mystruct*) malloc(100 * sizeof(mystruct));
              str[i]->a = 1;
              str[i]->b = 2.0;
              str[i]->c = "test";
          }
          free(str);
          return 0;
      Alles anzeigen

      Die einzige Idee die ich hätte wäre, mit in die for Schleife, bevor ich c initialisiere:
      "str[i]->c=(char*)malloc(100*sizeof(char);
      hineinzubringen. Jedoch zweifle ich noch an der Richtigkeit.

      ich würde mich über Tipps, Kommentare oder Hinweise freuen.
      Gruß Harry

Rechtliches

Impressum

Datenschutzerklärung