Ich muss eine Funktion erstellen, die eine Zahl akzeptiert, eine Zeichenfolge/Sequenz von Zahlen dynamisch zuweist, sie mit Zufallszahlen initialisiert und zurückgibt. Irgendwelche Hilfe?Dynamisches Zuweisen eines int-Arrays
Antwort
Es gibt ein paar Probleme mit Ihrem Code, zum Beispiel malloc()
einen Zeiger zurückgibt, so dass Sie wollen einen Zeiger auf eine Variable zuzuordnen, die ist ein Zeiger. Mit anderen Worten, Sie sollten den Rückgabewert malloc()
niz
und nicht *niz
zuweisen.
Als nächstes sollte einen Zeiger zurückgeben, wo das Array int
s mit den zufälligen Werten residieren. Der Rückgabetyp sollte int *
sein.
In Fortsetzung mit der obigen Logik sollte Ihre Funktion den Zeiger niz
zurückgeben. Wenn Sie niz
(mit *niz
) dereferenzieren, geben Sie das erste Element des Arrays zurück (das ist nicht, was Sie brauchen).
void funkcija(int broj)
{
char *niz;
int i;
niz = (char*)malloc(broj*sizeof(char));
fillstring(niz, broj);
//Use string here
free(niz);
}
void fillstring(char *buffer, int len)
{
int i;
srand(time(NULL));
for (i = 0; i < len; i++)
{
buff[i] = '0' + rand() % 10;
}
}
Wie macht es Sinn, srand innerhalb einer Funktion namens "fullstring" anzurufen? Klingt wie eine Funktion, die Sie vielleicht mehr als einmal aufrufen möchten – Lundin
Es ist besser, Speicher an der gleichen Stelle zu reservieren, wo Sie ihn frei haben werden Ich möchte nicht malloc() aufrufen und den Zeiger auf den zugewiesenen Speicher in der Aufruf Funktion – Beka
Vereinbar damit (obwohl in diesem Fall die Funktion nur Speicher leckt), aber der Aufruf srand muss in irgendeiner Art von Init-Funktion sein, da es nur einmal aufgerufen werden sollte – Lundin
Sie wollen dies:
int funkcija(int broj)
{
int *niz;
int i;
niz = (int*)malloc(broj*sizeof(int));
srand(time(NULL));
for (i = 0; i < broj; i++)
{
niz[i] = rand() % 50;
printf("%d\n", niz[i]);
}
return niz;
}
- 1. Dynamisches Aktualisieren eines Fragments
- 2. Zuweisen eines großen DMA-Puffers
- 3. Dynamisches Ändern der Größe eines geöffneten Akkordeons
- 4. Dynamisches Festlegen der IISUrl eines Webanwendungsprojekts
- 5. Dynamisches Ersetzen eines Fragments funktioniert nicht
- 6. Dynamisches Hinzufügen eines ViewUserControls in ASP.NET MVC
- 7. Dynamisches Erstellen eines Kerndatenmodells zur Laufzeit
- 8. Zuweisen eines Arbeitsblattbereichs zu einem Array
- 9. Standardwerte beim Erstellen eines neuen Elements zuweisen
- 10. Kopie auf Schreibspeicher innerhalb eines Prozesses zuweisen
- 11. Zuweisen eines Stringliteral zu einem char *
- 12. Zuweisen eines asynchronen Ergebnisses zu einer Datenbindungseigenschaft
- 13. Zuweisen eines Zahlenbereichs für ein MySQL-Feld
- 14. Zuweisen und Freigeben eines Char * in C++
- 15. Zuweisen eines String "Wert in Java
- 16. Zuweisen eines std :: shared_ptr in Zuweisungsoperatoren
- 17. Probleme beim Zuweisen eines Struktur-Arrays
- 18. Zuweisen eines Nullwert in einen int
- 19. Zuweisen eines öffentlichen Schlüssels zum Benutzer-Login
- 20. Dynamisches Array in C#
- 21. Wie die Adresse eines lokalen schnellen Variable eines UnsafeMutablePointer zuweisen
- 22. dynamisches Casting
- 23. Dynamisches Startbildschirmbild?
- 24. Dynamisches Laden eines Flash-Films von einem Flash-Film
- 25. Dynamisches Ausblenden eines Elements aus der ItemTemplate von DataList
- 26. Dynamisches Erstellen eines Google-Arbeitsblatts aus einer Chrome-Erweiterung?
- 27. Dynamisches Verbinden eines Modells mit Datenbanken in einer laufenden App?
- 28. Dynamisches Hinzufügen eines ActiveX-Steuerelements ohne den VS-Designer
- 29. Dynamisches Erstellen eines Menüs in Tkinter. (Lambda-Ausdrücke?)
- 30. Dynamisches GET eines JSON-Objekts für die MusicBrainz-App | AngularJS
die '*' s entfernen, bevor 'niz' und legte ein' * '' vor funkcija'. 'niz' ist ein Zeiger auf' int', und '* niz' ist ein' int' und es ist eigentlich dasselbe wie 'niz [0]'. Wenn Sie 'int funkcija (...' schreiben, dann geben Sie ein 'int' zurück, aber Sie wollen einen Zeiger auf' int' zurückgeben.) –