Hardwarenahe_Programmierung/examples/c/tp-swap.c

61 lines
951 B
C
Raw Normal View History

2018-09-26 21:54:09 +02:00
/*
tp-swap.c: TecPro Beispielprogramm
Kurzbeschreibung: "call by reference / call by value"
C.Koch | HS-Emden-Leer | 19.12.2010
*/
#include <stdio.h>
int swapRef(int* a, int* b);
int swapVal(int a, int b);
int swapMem(int* a, int* b);
void main(void)
{
/* auto -> Stack | static -> Datensegment*/
static int a,b;
a = 10; b = 20;
swapVal(a,b);
printf("Var \t a =%i \t b= %i \n",a, b);
swapRef(&a, &b);
printf("Var \t a =%i \t b= %i \n",a, b);
swapMem(&a, &b);
printf("Var \t a =%i \t b= %i \n",a, b);
}
int swapRef(int* a, int* b)
{
int temp;
temp = *a;
*a = *b; *b = temp;
return temp;
}
int swapVal(int a, int b)
{
int temp;
temp = a;
a = b; b = temp;
return temp;
}
/* Aufgabe: Wie muss die folgende Funktion geändert werden,
falls die Variablen a und b auf dem Stack liegen und nicht im Datensegment? */
int swapMem(int* a, int* b)
{
int temp;
temp = *a;
*a = *(a+1); *(a+1) = temp;
return temp;
}