![]() |
Anzeige:
|
|
|||||||
| C/C++, Visual C++, Visual C++.NET Fragen und Antworten zu C/C++, Visual C++ und Visual C++.NET |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 06.11.2006
Ort: Worms
Beiträge: 64
|
Hallo,
ich versuche jetzt schon seit Tagen mein Problem zu finden... Hier mal meine Mainfunktion: Code:
int main(void) {
//auswahl für die Menusteuerung;
int auswahl = 0;
//Pointer für die Werte;
void **Wert = NULL; // NULLZEIGER
double *Werte = NULL;
*Wert = &Werte;
do {
auswahl = werteeingabe(auswahl, *&Wert);
}while(auswahl);
if(*Wert)
free (*Wert);
rewind(stdin);
return 0;
}
int werteeingabe(int auswahl, **Wert) {
//Hier wird dann das Array allokiert und erst wirklich erstellt...
//Wie ist ja jetzt nicht so wichtig... darum gehts mir auch nicht
}
Ja ich will in einer anderen Funktion (also erst später) sagen das der Zeiger von Wert auf ein dynamisches (im Heap befindliches) Array zeigen soll mit dem ich arbeiten will. Da der Benutzer die Anzahl der Werte des Arrays erst noch eingeben muss, zeigt mein Zeiger zu beginn auf die Adresse 0x00000000, was einen Zugriffsfehler zur Folge hat Der Zeiger auf den Zeiger hat die Adresse 0xcccccccc. Was mir auch nix bringt. Ist es Sinnvoll die Adresse des Zeiger auf den Zeiger zu übergeben? Wie kann ich den Fehler wegbekommen das er mir nicht irgendwo hinzeigt sondern sinnvollerweise dahin wo er keinen Schaden anrichten kann *G*. Danke im Vorraus PS: es ist reiner C Quellcode, mit C++ kann ich nix anfangen.
__________________
Gruß zeratul |
|
|
|
|
|
|
#2 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 06.11.2006
Ort: Worms
Beiträge: 64
|
Code:
int main(void) {
//auswahl für die Menusteuerung;
int auswahl = 0;
//Pointer für die Werte;
void **Wert = NULL; // NULLZEIGER
double *Werte = NULL;
*Wert = &Werte;
do {
auswahl = werteeingabe(auswahl, *&Wert);
}while(auswahl);
if(*Wert)
free (*Wert);
rewind(stdin);
return 0;
}
int werteeingabe(int auswahl//WAR FALSCH//anzahl<-!, **Wert) {
//Hier wird dann das Array allokiert und erst wirklich erstellt...
//Wie ist ja jetzt nicht so wichtig... darum gehts mir auch nicht
}
Folgendermaßen wäre es dann "korrekt": Code:
int werteeingabe(int anzahl, *Wert);
int main(void) {
//auswahl für die Menusteuerung;
int anzahl = 0;
//Pointer für die Werte;
double *Werte = NULL;
//Werteeingabe (spar mir jetzt eine Textaufforderung)
scanf_s("%d",&anzahl);
anzahl = werteeingabe(anzahl, &Wert);
free (Wert);
rewind(stdin);
return 0;
}
int werteeingabe(int anzahl, **Wert) {
*Wert = (double *) malloc ( anzahl*sizeof( double ) );
return anzahl;
}
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|