Call by Reference - [Warning] incompatible pointer type



  • Hallo Freunde der Zeiger,

    ich habe folgendes kleine Programm programmiert:

    #include <stdio.h>
    #include <stdlib.h>
    
    void Funktion(char *String)
    {
         char hallo[]={"hallo"};
         sprintf(String,"%s",hallo);     
    }
    
    int main(void)
    {
      char Wort[400];
    
      Funktion(&Wort);  
      printf("%s\n",Wort);
    
      system("PAUSE");	
      return 0;
    }
    

    Das Problem ist, dass beim Kompilieren die Warnung "[Warning] passing arg 1 of `Funktion' from incompatible pointer type" kommt. Wenn ich den Funktionsaufruf so abändere, wie unten, kommt keine Warnung:

    Funktion(&Wort[0]);
    

    Bei scanf geht es aber doch auch ohne Warnung:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
      char Wort[400];
    
      scanf("%s",&Wort);
      printf("%s\n",Wort);
    
      system("PAUSE");	
      return 0;
    }
    

    Vielen Dank für eure Hilfe,
    Felix



  • Es muss

    Funktion(Wort);
    

    heißen, da der Name eines Arrays ein Zeiger auf des erste Element ist.
    (Wort ist gleichbedeutend mit &Wort[0]}

    mfg, loose



  • Danke für die Antwort. Ich habe wohl zu kompliziert gedacht.


Anmelden zum Antworten