В переменной 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.
Выделение и освобождение памяти
void main()
{
unsigned int ArraySize;
scanf("%u",&ArraySize);
SomeType *t=(SomeType*)malloc(sizeof(SomeType)*ArraySize);
/*
do something
*/
free(t);
}
Функция принимающая указатель:
Вызываем функцию -> Передаем пар-ры -> Передаем адрес (&x)
Описываем функцию -> Пишем, что принимает указатель(*p для компилятора)
main()
{
uint8_t x = 0;
test(&x);
}
test(uint8_t *p)
{
p++;
*p = 2;
}
Комментариев нет:
Отправить комментарий