Kleines Programm zum besseren Verständnis von Pointern
#include <stdio.h>
#define LEN 8
int main(void)
{
int i = 0;
int* pI = &i;
printf("Wert in i: %i \t Adresse von i: %p\n" ,i ,&i);
printf("Wert in pI: %p \t Adresse von pI: %p\nWert an der Stelle im Speicher des Wertes von pI: %i \n\n" ,pI ,&pI, *pI);
i = 1;
printf("Wert in i: %i \t Adresse von i: %p\n" ,i ,&i);
printf("Wert in pI: %p \t Adresse von pI: %p\nWert an der Stelle im Speicher des Wertes von pI: %i \n\n" ,pI ,&pI, *pI);
*pI = 2;
printf("Wert in i: %i \t Adresse von i: %p\n" ,i ,&i);
printf("Wert in pI: %p \t Adresse von pI: %p\nWert an der Stelle im Speicher des Wertes von pI: %i \n" ,pI ,&pI, *pI);
return 0;
}
Kleines Programm zum besseren Verständnis von Structs
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// basics
struct person
{
int age;
char name[100];
};
typedef struct person pers;
typedef pers* pPers;
int main(int argc, char **argv)
{
struct person hansi;
hansi.age = 35;
strcpy(hansi.name, "HANSI Han\n");
printf("%i %s\n", hansi.age, hansi.name);
pers dagmar;
dagmar.age = 36;
strcpy(dagmar.name, "DAGMAR DURR\n");
printf("%i %s\n", dagmar.age, dagmar.name);
pPers glug;
glug = (pers *)malloc(sizeof(pers));
glug->age = 10;
strcpy(glug->name, "GLUG GLUCK\n");
printf("%i %s\n", glug->age, glug->name);
// linked list
typedef struct element
{
int val;
struct element *next;
} element_t;
typedef element_t *pElement_t;
pElement_t head = NULL;
pElement_t elem = NULL;
// list fill
for(int i = 1; i <= 10; i++)
{
elem = (element_t *)malloc(sizeof(element_t));
elem->val = i;
elem->next = head;
head = elem;
}
// list print
while (elem)
{
printf("%i\n", elem->val);
elem = elem->next;
}
return 0;
}
Pointer Arithmetic
#include <stdio.h>
int main(void)
{
char buffer[100];
int* p = (int*) buffer;
for (size_t i = 0; i < 100; i++)
{
buffer[i] = '0';
}
int a = 0x65242332;
buffer[99] = 0;
*p = a;
p++;
*p = a;
printf("%s\n", buffer);
return 0;
}