:::: MENU ::::

Указатели

Памятка об указателях в языке программирования C.

В переменной p содержится адрес, по которому хранится переменная с:

p = &c

В переменной a, то что находится по адресу в переменной p(a == c):

a = *p
int c;
int* p;
int a;
int arr[10];

p = &c;
a = *p;
p = p + 1;
a = *p; // следующая переменная в памяти типа int

В массиве:

a = arr; // то же самое что и сл. строчка
p = &arr[0]; // то есть arr без скобок это уже указатель на первый элемент массива

Что бы взять указатель на переменную другого типа, используют такую конструкцию:

float x;
char* p;

p=(char*) &x;
// тогда p указатель на перменную типа char. float - больше, состоит из нескольких char.

Функция принимающая указатель:
Вызываем функцию -> Передаем пар-ры -> Передаем адрес (&x)
Описываем функцию -> Пишем, что принимает указатель(*p для компилятора)

main()
{
    uint8_t x = 0;
    test(&x);
}

test(uint8_t *p)
{
    p++;
    *p = 2;
}

Указатель на функцию:

int sum(int a, int b) {
    return a + b;
}
 
void main () {
    int (*fptr)(int, int) = NULL;
    int result;

    fptr = sum;

    result = fptr(10, 40);
}