Variabel als Pointer ausgeben

ElMadridano

Mitglied
Hallo,
Ich bin im 2.Semester Programmieren und tu mich schwer mit Pointern und Funktionen. Hier hab ich ein Programm, wo ich die 3er Reihe darstelle. Die for Schleife soll in einer Funktion sein.
C++:
int function(int *i)
{
    for(i=0; i<30 ;i=i+3)
    {
        printf("%i\n",&i);
    }
}
int main()
{
    int *i;
    function(&i);
}
Die for Schleife ist in einer Funktion, welches ich im main aufrufe. Meine Frage und mein Problem: Wie kann ich die Variabel i im main deklarieren und dann trotzdem in der Funktion verwenden, ohne Rückgabewerte und alles drum und dran? Wie muss ich die *Sterne der Pointer setzen und wo kommen die &unds ?
Wäre sehr nett, wenn mir das einer erklären könnte,

Danke sehr
 
Zuletzt bearbeitet von einem Moderator:

Robat

Top Contributor
Also wenn du die Variable in der anderen Funktion verändern willst, musst du dessen Adresse übergeben. Dazu erwartet deine Funktion schon richtigerweise einen int-Pointer als Parameter void function(int* i). Ich würde in der main einfach eine int-Variable erstellen und dessen Adresse mittels des &-Operators an die Funktion übergeben.
C:
int main(int argc, char** argv) {
    int i = 0;
    function(&i); // Adresse an die Funktion "function" übergeben
}
In der Funktion selber musst du dann immer, wenn der Wert von i verändert werden soll, i vorher dereferenzieren. Das machst du, indem du den *-Operator davor schreibst. Das Dereferenzieren ist wichtig, da du sonst die Adresse verändern würdest, nicht aber den Wert.
C:
for(*i = 0; *i < 30; *i += 3) {
    printf("%i\n", *i); // hier muss i auch wieder dereferenziert werden, weil du den Inhalt der Adresse ausgeben möchtest
}
 
X

Xyz1

Gast
Mal zusammenfassen:
C++:
// Example program
#include <stdlib.h>
#include <stdio.h>

void printMe(int * ip) {
    printf("%p\n", &ip);
    printf("%p\n", ip);
    printf("%d\n", *ip);
    printf("\n");
}

int main()
{
    for (int j = 0; j < 5; j++) {
        {
            int i = j;
            int * ip = &i;
            printMe(ip);
        }
        {
            int i = rand();
            int * ip = &i;
            printMe(ip);
        }
    }
}

Erzeugte Ausgabe:
Code:
0x73be19cf1f38
0x73be19cf1f5c
0

0x73be19cf1f38
0x73be19cf1f5c
1804289383

0x73be19cf1f38
0x73be19cf1f5c
1

0x73be19cf1f38
0x73be19cf1f5c
846930886

0x73be19cf1f38
0x73be19cf1f5c
2

0x73be19cf1f38
0x73be19cf1f5c
1681692777

0x73be19cf1f38
0x73be19cf1f5c
3

0x73be19cf1f38
0x73be19cf1f5c
1714636915

0x73be19cf1f38
0x73be19cf1f5c
4

0x73be19cf1f38
0x73be19cf1f5c
1957747793

Noch Fragen?
 
X

Xyz1

Gast
Die Frage war gar nicht an dich gerichtet, ich weiß nicht wieso du dich hier einmischt? function ist nen Schlüsselwort das compiliert nicht mal.
Wie seine main gestaltet ist ist letztendlich schnuppe. Wichtig ist das es eine Funktion mit der Ausgabe gibt.
Aber um den Frieden wiederherzustellen werde ich nichts mehr dazu schreiben.
 

ElMadridano

Mitglied
Danke für die antworten,
ich hab jetzt die Lösung von Robat übernommen, für einen Anfänger wie mich ist das am verständlichsten.
Jetzt hab ich eine Basis, mit denen ich dann auch die anderen Aufgaben in dem Bereich selbstständig lösen kann.
Danke nochmal an alle
 

Ähnliche Java Themen

Neue Themen


Oben