Forum: Mikrocontroller und Digitale Elektronik Pointer als Argument in Funktionsdeklaration angeben


von Michi (Gast)


Lesenswert?

Hallo

Kennt jemand die korrekte Schreibweise für die Funktionsdeklaration, 
wenn eines der Argument ein Zeiger ist?

In diesem Beispiel hab ich die Varianten, die mir in den Sinn gekommen 
sind angegeben:
1
void dieFunktion(int arg1, int *argP);    //Variante 1
2
void dieFunktion(int , int );             //Variante 2
3
void dieFunktion(int , *int );            //Variante 3
4
void dieFunktion(int , int* );            //Variante 4
5
6
void main(void )
7
{
8
    int Zahl1;
9
    int Zahl2;
10
11
12
    dieFunktion(Zahl1, Zahl2);
13
    while(1);
14
}
15
16
dieFunktion(int arg1, int *argP)
17
{
18
   Zahl2 = Zahl1;
19
20
}

Welche der 4 Varianten werden vom MPLAB Compiler zuverlässig 
interpretiert?

Besten Dank und schönes Wochenende!

von Sebastian W. (wangnick)


Lesenswert?

Deklaration: Variante 1 oder 4.

Definition: Bei diesen Varianten muss der Zeiger auf der linken Seite 
der Zuweisung dereferenziert werden.

Aufruf: Das zweite Argument muss ein Zeiger sein, also &Zahl2.

LG, Sebastian

von Michi (Gast)


Lesenswert?

Vielen Dank

Beim Aufruf habe ich das & vergessen, weil in meinem eigentlichen code 
dort ein Array und nicht ein simpler int steht, wodurch das & in der 
Parameterübergabe ja enthalten ist.

Gruss
Michi

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Michi schrieb:
> Beim Aufruf habe ich das & vergessen, weil in meinem eigentlichen code
> dort ein Array und nicht ein simpler int steht

Ich glaub du schmeißt hier noch einiges durcheinander.
Schau dir mal "call-by-value" und "call-by-reference" genauer an:
https://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_Weitere_Grundelemente/_Prozeduren_und_Funktionen#call-by-value

Und Achtung, hier gibt es Unterschiede je nachdem ob man einen reinen 
C-Compiler verwendet oder einen für C++ (der ja in der Regel genauso gut 
C-Style-Code verarbeitet).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.