[c++]Fehler nicht auffindbar(Unterprogramm)

Schluchti

Grünschnabel
Hi!

Ich hätte eineFrage,die mich jetzt schon geschlagene 30Minuten auf Trapp hält,und den ich aufs verrecken nicht finden kann.
Der Code sieht so aus:

PHP:
#include <iostream.h>
#include <conio.h>
float array(int  *zahlen[10]);  
float array(int *zahlen[10])    
{
int x,j,i,temp;
for(x=0;x<10;x++)
    {
    cin>>*zahlen[x];
    }
for(i=0;i<10;i++)
    {
        for(j=0;j<9;j++)
                {
                if((*zahlen[j])>(*zahlen[j+1]))
                                {
                                   temp=*zahlen[j];
                                         *zahlen[j]=*zahlen[j+1];
                                             *zahlen[j+1]=temp;
                                }
                }
     }
     }

int main()
{
int zahlen[10],temp,test,x,j,i;
cout<<"Tauschprogramm\n";
array(int &zahlen[10]);               
cout<<zahlen[0];
getch();
}
Das Programm soll aus 10 Zahlen die im Unterprogramm eingelesen werden die kleinste ermitteln und diese im Hauptprogramm ausgeben.
Der Compiler meldet jedoch in der Zeile array(int &zahlen[10]); einen Fehler,doch ich weiß nicht woher er kommt.
Ich habe das ganze auch einmal ohne einem Unterprogramm probiert,(alles in das Hauptprogramm geschrieben) dann geht alles.

Kann mir jemand helfen?

mfg Bernhard
 
Code:
#include <iostream>
#include <conio.h>

using namespace std;

float array1(int zahlen[10])    
{
int x,j,i,temp;
for(x=0;x<10;x++)
    {
    cin>>zahlen[x];
    }
for(i=0;i<10;i++)
    {
        for(j=0;j<9;j++)
                {
                if((zahlen[j])>(zahlen[j+1]))
                                {
                                   temp=zahlen[j];
                                         zahlen[j]=zahlen[j+1];
                                             zahlen[j+1]=temp;
                                }
                }
     }
}

int main()
{
int zahlen[10];

cout<<"Tauschprogramm\n";
array1(zahlen);               
cout<<zahlen[0];

system("PAUSE");
}


Ich weiss nicht, so es, ich hab halt alle zeiger etc weggemacht weil ich davon keine AHnung habe :D
 
Zuletzt bearbeitet:
Vielen Dank!

Irgendwie total unlogisch,aber es funktioniert.

Könnte mir jemand erklären warum dies mit Zeigern nicht funktioniert?

Das wichtigste ist erstmal das es funktioniert :D

Danke nochmal.

Bernhard
 
Du hast einen Denkfehler gemacht, das ist alles.

int* array[10]; -> du legst einen Array von 10 Pointern auf int an

deswegen muss es

int array[10];

heißen

Das hätte sich aber auch ohne Probleme mit nem Pointer lösen lassen. Um genau zu sein ist ein Array ja nur ein Pointer (auf den Anfang vom Array)


void f(int* pArray)
{
pArray[x] = ...
}

wäre genauso gegangen
 
Ist das nicht auch so das Array eh immer "by-Value" übergeben werden und es darum unnötig ist dies mit Pointer zu machen ?
 
ich glaub ich habs jetzt. Danke!

@buggii: So wie ich das bisher verstanden habe gibt es zwei Arten von Unterprogrammen
.) call by value
.) call by reference

Im Prinzip glaub ich ist es ziemlich egal welchen Typ man verwendet.

Korrigiert mich wenn ich falsch liege.

Bernhard
 
Ich finde auch, dass die markierte Stell nicht stimmt. müsste da nicht das int weg? Die Variable gibt es doch schon.
Ich habe (noch) keine Ahnung von C++. Aber für mich sieht das nach einem Fehler aus.
C++:
int main() 
{ 
   int zahlen[10],temp,test,x,j,i; 
   cout<<"Tauschprogramm\n"; 
   array(int &zahlen[10]);          //Hier das int weg      
   cout<<zahlen[0]; 
   getch(); 
}
 
C++:
int main() 
{ 
   int zahlen[10],temp,test,x,j,i; 
   cout<<"Tauschprogramm\n"; 
   array(&zahlen);
   cout<<zahlen[0]; 
   getch(); 
}


So würde ich es machen :)
zahlen zeigt ja auf die Adresse des Arrays demnach brauch man ja auch nur diese adresse übergeben.
 
Zurück