zeiger auf funktionen
-
Hallo Leute,ich habe ein Pb.warum stürzt mein Programm ab.Was ist bei der Aufruf der Funktion falsch?
#include<iostream.h> // using namespace std; #include<stdlib.h> float *funktion(float *array[], int n); float max; float* vector = new float; void main(void) { int len; float *max_wert; cout<<"Wie lang soll das array werden:"<<endl; cin >> len; vector = new float[len]; cout<<"Geben Sie die werte ein:"; for(int i=0;i<len;++i) { cin >> vector[i]; } cout<<" die Werte sind:"<<endl; for(int k =0;k<len;++k) { cout<<"\t"<<vector[k]; } cout<<endl; max_wert= funktion(&vector,len); //cout<<"Maxi="<<max_wert<<endl; //cout<<"Maxi="<<*funktion(n)<<endl; //cout<<"Maxi ="<<*funktion(&vector,len)<<endl; } float *funktion(float *array[], int n) { int i=0; float *p_max; max = *array[i]; /*for(int k =0;k<n;++k) { cout<<"\t"<<array[k]; }*/ while(i<n){ if(*array[i]>max) max = *array[i]; //array[i] = max; i++; } p_max = &max; cout<<" Der grosste Wert ist"<< max<<endl; cout<<" Die Adresse der grosste Wert ist "<<&max<<endl; return(p_max); }
/edit: Bitte C++ Code Tags verwenden
-
du willst sicher zuerst dereferenzieren und dann mit dem operator[] auf dein array zugreifen, also
(*array)[i]
und außerdem zeigt dein "p_max" nicht auf ein element im array, sondern auf die lokale variable max. irgendwo gehört statt
p_max = &max; //stattdessen p_max = *array + x; //x ist offset des größten elements
du verwendest außerdem zuviele globale variablen, und vergisst ständig, delete (bzw. delete []) und das new im globalen bereich ist auch zuviel des guten.
-
Danke!
ich habe das array in einer funktion erzeugt und habe den new , sowie vector in main geräumt.