Psycho-Dad
Aktives Mitglied
Thread Starter
- Dabei seit
- 06.02.2005
- Beiträge
- 272
- Reaktionspunkte
- 2
Hi Leute,
ich hätte eine kleine Frage zu C und den tollen Pointern.
Ich habe heut zwei kleine Programme geschrieben, eines zur Zinsberechnung und ein zweites um einzelne Zeichen einer Zeichenkette auszutauschen. In beiden Fällen wird die eigentliche Arbeit in von einer kleinen Subroutine vorgenommen.
Im Falle der Zinsberechnung wird diese mit berechnung(&betrag, zinssatz) aufgerufen, im Falle der Zeichenoperation mit ersetze(string, 'e', 'E') .
Nun meine eigentliche Frage, im ersten Fall übergebe ich an die Sub ja nur die Adresse des Speicherbereichs in dem betrag steht. In der Sub wird dann mittels Pointer auf diesen Bereich gerechnet. Das ist für mich soweit verständlich.
Aber warum übergebe ich im zweiten Fall nur die Variable und nicht deren Speicherbereich wenn die Sub doch einen Pointer und somit einen Speicherbereich erwartet???
Ich häng beide Programme nochmal an, beide funktionieren nur beim zweiten verstehe ich eben nicht warum.
Zinsberechnung
Zeichenkette
ich hätte eine kleine Frage zu C und den tollen Pointern.
Ich habe heut zwei kleine Programme geschrieben, eines zur Zinsberechnung und ein zweites um einzelne Zeichen einer Zeichenkette auszutauschen. In beiden Fällen wird die eigentliche Arbeit in von einer kleinen Subroutine vorgenommen.
Im Falle der Zinsberechnung wird diese mit berechnung(&betrag, zinssatz) aufgerufen, im Falle der Zeichenoperation mit ersetze(string, 'e', 'E') .
Nun meine eigentliche Frage, im ersten Fall übergebe ich an die Sub ja nur die Adresse des Speicherbereichs in dem betrag steht. In der Sub wird dann mittels Pointer auf diesen Bereich gerechnet. Das ist für mich soweit verständlich.
Aber warum übergebe ich im zweiten Fall nur die Variable und nicht deren Speicherbereich wenn die Sub doch einen Pointer und somit einen Speicherbereich erwartet???
Ich häng beide Programme nochmal an, beide funktionieren nur beim zweiten verstehe ich eben nicht warum.
Zinsberechnung
Code:
#include <stdio.h>
float berechnung (float *betrag, float zinssatz) {
float hilf = *betrag;
/*printf("\n Aktuelle für Berechnung verwendeter Betrag: %f", *betrag);*/
*betrag = hilf*zinssatz;
return 0;
}
int main () {
int i;
int laufzeit;
float zinssatz;
float betrag;
printf("Betrag in Euro: ");
scanf("%f", &betrag);
printf("\nLaufzeit in Monaten: ");
scanf("%i", &laufzeit);
printf("\nZinssatz in Prozent: ");
scanf("%f", &zinssatz);
zinssatz = 1 + (zinssatz/100);
printf("\n");
for (i=1; i<=laufzeit; i++) {
berechnung(&betrag,zinssatz);
printf("\nBetrag in Euro nach %i Monaten Laufzeit: %.2f", i, betrag);
}
return 0;
}
Zeichenkette
Code:
#include <stdio.h>
#include <string.h>
#define MAX_STRING 80
void ersetze (char *str, char alt, char neu) {
while (*str) {
if (*str==alt) {
*str = neu;
}
*str++;
}
}
int main () {
char string[MAX_STRING];
strcpy(string,"In diesem Satz wird e durch E ersetzt");
ersetze(string, 'e', 'E');
printf("\n%s",string);
return 0;
}