"Pointer Funktion" integer uebergeben?



  • hallo.

    ich habe eine char Pointer Funktion und muss dieser nun eine Integer variable uebergeben.weiss jemand wie das geht?

    sieht ungefaehr so aus : [/cpp]char *hallo(char *hal) {

    ...

    return hal;
    }
    int main(int argc, char *argv[]) {

    int sers;
    ...
    hallo(sers);
    ...
    }
    [cpp]

    und wenn ich das so mache wie es hier im Code steht,kommt beim compilieren : warning: passing argument 1 of 'hallo' makes pointer from integer without cast.

    danke im Voraus.



  • Deine Funktion erwartet eine Adresse, also solltst du ihr auch eine Adresse geben. 😉

    Am besten wärs wohl so:

    ...
    int sers = 0;
    char hilf = sers;
    
    hallo(&hilf);
    ...
    

    Allerdings wärs interesant, was deine Funktion macht. Nicht, dass sie eigentlich ein char-Array erwartet ⚠



  • danke,hat auch geklappt,..nur,dass jetzt die Funktion jetzt nicht starten will:( cmpiliert zwar ohne fehler,aber beim starten dann,faengt er diese Funktion garnet an.

    char *hallo(char *hal){
    
             char* s;
    	...
    
    	s = (char*)malloc(256);
    	while (1) {
    		....
    
    		if (write(hal), s, strlen(s)+1) == -1) {
    /* bin mir hier mit dem write nicht sicher,ob ich das hal richtig uebergeben habe*/
    			perror("geht net");
    			break;
    			}
    		sleep(1);
    	}
    	if (close(hal) == -1) {
    /* genauso hier mit close und hal */
    		perror("geht auch nicht");
    		return NULL;
    */muss ich hier NULL zurueckgeben,hatte es naemlich als void Funktion,und dann gings ohne NULL nur return einfach*/
    		}		
    	free(s);
    	return hal;/*da bin ich mir auch nicht sicher,ob ich return hal machen soll,denn offensichtlich nimmt er es gar nicht an*/ 
    	exit(0);
    

    Programm startet zwar,will aber ueberhaupt nicht in die char *hallo Funktion hinein.



  • Du weißt aber schon, dass open(), write(), read() und close() etwas mit Dateiverarbeitung zu tun haben.

    Was willst du mit deiner Funktion überhaupt machen?



  • bin ja nur mal drüber geflogen, aber ich glaube, das hier wollt ihr gar nicht

    AJ schrieb:

    ...
    int sers = 0;
    char hilf = sers;
    
    hallo(&hilf);
    ...
    

    , sondern ihr wollt doch die Ziffer die den Wert aus sers darstellt in eine char-Variable schreiben:

    int sers = 0;
    char hilf = (char)(sers+48);//caution:0<sers<10 
    //oder: hilf = (char)(sers) + '0';
    hallo(&hilf);
    

    oder??
    (ich hoffe, daß ich ier nicht wieder totalen nonsense verzapfe)



  • @freshman
    Man kann es natürlich auch mit einem expliciten Cast schreiben ;).



  • Sonreir schrieb:

    cmpiliert zwar ohne fehler,aber beim starten dann,faengt er diese Funktion garnet an.

    char *hallo(char *hal){
    	...
    	if (write(hal, s, strlen(s)+1) == -1) {//hier war eine Klammer zu viel
    

    das läßt sich compilieren? ich dachte write(...) erwartet als ersten Parameter ein int und hal ist Pointer auf char?? 😕 kann michda mal jemand aufklären??thanx'



  • @freshman
    Ganz einfach:
    Ein Pointer/Zeiger ist eigentlich nur eine Variable, die eine Speicheradresse beinhaltet. Der Datentyp dieser Variable ist unsigned int. Ist es dir jetzt klarer??



  • @AJ: hört sich logisch an. Ist aber doch ziemlich seltsam, oder (sers ist ja ein File-Handle)? Geht das denn mit so einer seltsame implizite casterei noch alles gut?
    ist ja zum schießen: dh in meiner Sprache (Anfängersprache, da freshman) würde ich das dann so ausdrücken:
    in sers speichert man den Wert 0
    in hilf speichert man sers (den Wert 0), dh das Zeichen (NUL)
    in hal steht Adresse von hilf, dh hal zeigt auf hilf
    dann müßte ich aber doch mit (*hal) dereferenzieren, um auf den Inhalt von hilf zu kommen
    der Inhalt von hilf ist das Zeichen (NUL) als int interpretiert der Wert 0



  • Ja mir kommt das ganze auch etwas seltsam vor. Darum auch dieser Post:

    AJ schrieb:

    Du weißt aber schon, dass open(), write(), read() und close() etwas mit Dateiverarbeitung zu tun haben.

    Was willst du mit deiner Funktion überhaupt machen?



  • und was ist hier mit:

    freshman schrieb:

    dann müßte ich aber doch mit (*hal) dereferenzieren, um auf den Inhalt von hilf zu kommen
    der Inhalt von hilf ist das Zeichen (NUL) als int interpretiert der Wert 0


Anmelden zum Antworten