2010-11-27 5 views
0

Ich möchte eine Funktion verwenden, um verschiedene Arrays mit Daten zu füllen, indem ich diese Funktion dreimal aufruft.Was stelle ich in den Funktionsprototyp, wenn ich diese Funktion mit verschiedenen Parametern verwende?

// Function prototype 

void fill_array(); 

int main() 

{ 

    int bin_array[15], 

     prb_array[15], 

     seq_array[15]; 

    fill_array(bin_array); 

    fill_array(prb_array); 

    fill_array(seq_array); 

    return 0; 

} 

Meine Frage ist, welche Parameter sollte ich am Funktionsprototyp aufstellen? Alle drei?

// Function prototype 
void fill_array(insert parameter here); 

Antwort

2

Im Prototyp, müssen Sie nicht einmal überhaupt jeden möglichen Namen, sondern nur die Art:

void fill_array(int[]); 

Wenn Sie die Funktion definieren , jedoch müssen Sie einen Namen ein. Allerdings kann es sein, was Sie wollen:

void fill_array(int joe[]) { 
    //... 
} 

Edit: Obwohl nicht direkt auf das Problem auf der Hand bezogen, birryree ist ein ausgezeichneter Punkt. Sie sollten in der Regel die Größe eines Arrays passieren, wie gut, da sonst fill_array nicht wissen, wie groß das Array:

void fill_array(int[], int); 

void do_stuff() { 
    int bin_array[15], 

     prb_array[15], 

     seq_array[15]; 

    fill_array(bin_array, sizeof(bin_array)/sizeof(int)); 
    fill_array(prb_array, sizeof(prb_array)/sizeof(int)); 
    fill_array(seq_array, sizeof(seq_array)/sizeof(int)); 
} 

void fill_array(int bob[], int length) { 
    for(int i = 0; i < length; i++) { 
     bob[i] = i * 3; 
    } 
} 
+2

Sie werden wahrscheinlich ein zweites Argument, um die Anzahl der Elemente hinzufügen möchten, da Sie die Größe eines Arrays nicht erhalten, nachdem es an eine Funktion übergeben wurde. – birryree

+0

Ein ausgezeichneter Punkt. Ich habe meine Antwort geändert, um auf das –

+0

zu erweitern Ich denke, du meinst 'sizeof (bin_array)/sizeof (* bin_array)'. – strager

Verwandte Themen