Forum: PC-Programmierung Zeiger in C verstehen lernen


von Da Mo (Gast)


Lesenswert?

Guten Tag,

wie kann ich mit der Adresse auf welche der Zeiger pnt zeigt, in der 
Funktion func arbeiten?

Ich möchte in der Funktion func den Wert 99 der Variable var, mit Hilfe 
eines Zeigers überschreiben.
1
#include<stdio.h>
2
3
void func( ) //(int *pnt)???
4
{
5
 //Wie kann ich einen Wert auf die vom Zeiger zeigende Adresse  schreiben???
6
}
7
8
int main()
9
{
10
 int var=99;
11
 int *pnt; 
12
 pnt=&var;
13
14
 func( ); //(*pnt)???
15
 
16
 system("pause");
17
 return 0;
18
}

Vielen Dank!

von Udo S. (urschmitt)


Lesenswert?

Da Mo schrieb:
> void func( ) //(int *pnt)???

Ist schon mal ein richtiger Anfang. Es ist aber immer eine schlechte 
Idee einen Übergabeparameter und eine globale Variable den gleichen 
Namen zu geben.
Ausserdem brauchst du den globalen Paremeter " pnt=&var;" nicht, du 
kannst beim Aufruf der Funktion einfach "Adresse von var" übergeben.
Probiere es doch einfqach mal auf dem PC aus, das hilft dir mehr als die 
Lösung hier auf dem Tablett serviert zu bekommen.

von Peter II (Gast)


Lesenswert?

#include<stdio.h>

void func(int* pI ) //(int *pnt)???
{
   *pI = 42;
}

int main()
{
 int var=99;
 int *pnt;
 pnt=&var;

 func( pnt );

 system("pause");
 return 0;
}

von googoo (Gast)


Lesenswert?


von googoo (Gast)


Lesenswert?


von Da Mo (Gast)


Lesenswert?

Danke!

von Da Mo (Gast)


Lesenswert?

Wie kann ich int a und float b in der Funktion werteuebergabe in die 
Struktur c schreiben(mit Hilfe eines Zeigers)?
1
#include<stdio.h>
2
3
struct values
4
{
5
 int a;
6
 float b;
7
};
8
9
void werteuebergabe(int a, float b, struct values *c)
10
{
11
 ???
12
}
13
14
int main()
15
{
16
 struct values c;
17
    
18
 werteuebergabe(10, 5.5, &c);
19
 
20
 printf("%d\n", c.a);
21
 printf("%f\n", c.b);
22
 
23
 system("pause");
24
 return 0;
25
}

von Udo S. (urschmitt)


Lesenswert?

Wenn du einen Zeiger auf eine Struktur hast und damit auf dessen Werte 
zugreifen willst geht das über das '->' Symbol.
Also z.B. c->a. c muss dazu aber vom Typ "struct values *" sein.

Du brauchst ein gutes C Buch.

von Karl H. (kbuchegg)


Lesenswert?

Da Mo schrieb:
> Wie kann ich int a und float b in der Funktion werteuebergabe in die
> Struktur c schreiben(mit Hilfe eines Zeigers)?

DaMo
bitte, bitte, bitte

Leg dein PIC Buch zur Seite und arbeite erst mal die ersten paar Kapitel 
eines ordentlichen C-Buches durch. Ganz offensichtlich ist dein PIC Buch 
da nicht geeignet, dir die Grundlagen von C beizubringen. Sowas gibts 
auch online, das kostet dich nichts. Und dann arbeite das mal auf einem 
PC durch.

> void werteuebergabe(int a, float b, struct values *c)
> {
    c->a = a;
    c->b = b;
> }


http://openbook.galileocomputing.de/c_von_a_bis_z/

von Tom M. (Gast)


Lesenswert?

Ich würde dazu den Dereferenzierungs-Operator -> verwenden, das macht 
den Code besser lesbar.

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.