übergeben von nem Array Speicher???



  • Hallo

    Ich habe mir ein mini programm gebastelt und will mir hier ein array oder besser die adresse von dem array übergeben. Leider kann ich nichts in das array reinschreiben

    ich bekomme von Visual studio immer folgende Fehlermeldung.

    error C2440: '=' : 'char [7]' kann nicht in 'unsigned char *' konvertiert werden
    Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    Fehler beim Ausführen von cl.exe.

    hat jemand eine Idee???

    Danke mal

    void EigeneFunktion(unsigned char* name);
    
    int main(void)
    {
    	char array1[10];
    
    	EigeneFunktion((unsigned char*) array1);
    
    	printf("%s",array1);
    
        return EXIT_SUCCESS;
    }
    
    void EigeneFunktion(unsigned char* name)
    {
    	name="markus";
    }
    


  • void EigeneFunktion(unsigned char* name);
    
    int main(void)
    {
        char array1[10];
    
        EigeneFunktion(array1);
    
        printf("%s",array1);
    
        return EXIT_SUCCESS;
    }
    
    void EigeneFunktion(unsigned char *name)
    {
        strcpy(name, "markus");
    }
    


  • tobe00023 schrieb:

    error C2440: '=' : 'char [7]' kann nicht in 'unsigned char *' konvertiert werden
    Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

    und: compilier's als c, nicht c++. bennenn' einfach die datei um von 'irgendwas.cpp' in 'irgendwas.c'



  • Danke!

    Geh ich richtig der Annahme dass ich mich in der Funktion

    EigeneFunktion(unsigned char* name)
    

    um Speicher keine sorgen machen muss, da ich die Adresse von dem durch das array "char array1[10]"in der main Funktion Speicher allokiert array übergebe, und somit eben schon Speicher vorhanden ist.???



  • tobe00023 schrieb:

    Geh ich richtig der Annahme dass ich mich in der Funktion

    EigeneFunktion(unsigned char* name)
    

    um Speicher keine sorgen machen muss, da ich die Adresse von dem durch das array "char array1[10]"in der main Funktion Speicher allokiert array übergebe, und somit eben schon Speicher vorhanden ist.???

    nicht ganz. besser wär's du gibst der funktion noch die grösse des arrays mit und benutzt dann 'strncpy' anstatt 'strcpy'



  • Ok danke ich hab mir so zu helfen gewusst ohne umbennenen 🙂

    aber was mir ganz wichtig ist. So gross wie das array in der main Funktion ist soviel speicher hab ich in der Funktion

    void EigeneFunktion(unsigned char *name,int groesse)
    

    uebrig weil ich ja nur eine Adress von dem arry übergebe. Ist das korrekt? ich muss also kein neunen Speicher ( mit nem weiteren array oder gar malloc oder calloc) in der Funktion EigeneFunktion übergeben.

    Danke nochmal aber bei Speicher soll man ja net spassen *G*

    void EigeneFunktion(unsigned char* name,int groesse); 
    
    int main(void) 
    { 
        unsigned char array1[10]; 
    
        EigeneFunktion((unsigned char*)array1,10); 
    
        printf("%s",array1); 
    
        return EXIT_SUCCESS; 
    } 
    
    void EigeneFunktion(unsigned char *name,int groesse) 
    { 
        strncpy((char*)name, "markus",groesse); 
    
    }
    


  • tobe00023 schrieb:

    aber was mir ganz wichtig ist. So gross wie das array in der main Funktion ist soviel speicher hab ich in der Funktion

    kommt drauf an. wenn du die funktion von ausserhalb mit speicher versorgen willst, dann haste recht. das soll dich aber nicht davon abhalten in der funktion selber noch speicher (variablen, arrays etc.) anzulegen 😉



  • alles klar danke dass hab ich gemeint...


Anmelden zum Antworten