Array als Funktionsparameter



  • Hallo zusammen
    ja schon wieder eine Array Frage 🙄
    also ich hab eine funktion
    void fun(int a[2],int b[2]){}
    also immer Paare von Koordinaten
    und jetzt möchte ich beim Aufruf der Funktion nicht nur Variabelen übergeben sondern auch Zahlenpaare. Ich glaub ich hab schon alle Varianten von Klammerungen und so ausprobiert aber die richtige is mir noch nich untergekommen.
    Also ich suche sowas
    fun(a,[1,2])
    oder so 😕
    Kann mir jemand auf die Sprünge helfen?



  • void fun(int (*a)[2])
    {
    int (*array)[2] = a;
    }

    int a[2][2]=
    {
    {1,2},
    {3,4}
    };

    fun(a);



  • Ich bin nicht sicher, ob ich Dich richtig verstanden habe.

    Du könntest die pair-klasse der standardbibliothek einbinden

    #include <utility>
    
    fun(int a, pair<int,int>){
    ...
    }
    

    dann ginge sowas wie

    int main(){
    pair<int, int> pos;
    pos.first = 12;
    pos.second = -3;
    
    fun(12,pos);
    return 1;
    }
    


  • Ähm nein nicht ganz das was ich suche
    Ich möchte ja gerade nicht die Variabele sondern direkt beim Aufruf der Funktion die Zahlen angeben
    also wie void fun(int b) und dann fun(2)
    nur halt mit einem int b []



  • Mit einer Struktur könnte man es auch lösen:

    #include <iostream>
    using namespace std;
    struct Cord 
    {
      int xpoint;
      int ypoint;
    };
    
    void fun(int a,Cord cord)
    {
    	cout << "A: " << a << endl;
    	cout << "B: X= " << cord.xpoint << " Y= " << cord.ypoint << endl;
    }
    
    int main() 
    {
        Cord b;
        b.xpoint = 1;
    	b.ypoint = 5;
        fun(3,b);
     }
    


  • hmmmm 😞
    Ich möchte doch gerade im Funktionsaufruf die Parameter selbst angeben also die richtigen Zahlwerte. Ich kann auch einfach 8 einzellne int Werte nehmen aber lieber wären mir halt 4 int arrays mit je 2 int Werten.
    also irgendwie fun((1,2),(3,4),(5,6),(7,8))
    für die funktion void fun(int a[2],int b[2],int c[2],int d[2])
    und ich weiß jetzt halt einfach nicht wie der Funktionsaufruf richtig geht



  • wenn du es nicht weiß, dann umgehe das problem doch einfach, indem du ne struktur nimmst, inder du 2 int werte speichern kannst....



  • func( {3,2}, {4,1} );

    meinst du sowas????



  • mh ne sowas geht leider nicht.
    man könnte ja den präprozessor dafür missbrauchen

    #include <iostream>
    #define f_array(arg1,arg2) ({int tmp[2]={arg1,arg2};f(tmp);})
    
    void f( int tmp[2] )
    {
        std::cout << tmp[0] << tmp[1];
    }
    
    int main( )
    {
        f_array(1,2);
    }
    

    🕶 🤡 👎



  • ???? schrieb:

    func( {3,2}, {4,1} );

    meinst du sowas????

    Ja so in der Richtung hatte ich mir das gedacht aber mit dieser Klammerung klappt es nicht. So kann man zwar einem Array also der Variabelen selber die Werte zuweisen also
    int a[2] = {1,2}
    aber wenn das ganze als Parameterübergabe dienen soll klappt das anscheinend nicht warum auch immer 😕 😕 😕
    Na gut dann probier ich das mit dem define mal aus



  • Hast du schon mal daran gedacht, deine Arrays in eine Klasse zu verpacken und einen entsprechenden ctor bereitzustellen. 💡


Anmelden zum Antworten