Окей, я честно всю ночь пыталась с этим разобраться.
Но почему-то мне очень хочется сказать, что это какая-то гребаная женская логика (да, я шовинистическая свинья!).
Серьезно, на несколько страниц гуглопоиска по разным ключевым словам - ничерта непонятно, плюс разный синтаксис везде.
[Внимание! Пост проапдейчен в связи с тем, что я разобралась с
(
Read more... )
Comments 32
Reply
Reply
В ЕБЛИЩЕ!11
Reply
Reply
a = &b; // положить в а адрес b
cout << *a << endl; // получить данные по адресу a (разыменование)
int m[50]; // массив из 50 элементов. m при этом является указателем
При обращении к элементу фактически m[7] = *(m+7), т.е. к адресу m добавляется 7 размеров типа int (7*4), и по этому адресу происходит чтение (разыменование).
struct a { int x; }; // структура из одного элемента
struct b { a y; }; // тоже структура из одного элемента
b z; // объект этой структуры
z.y.x = 5; // обращение к самому вложенному элементу
b *t = &z; // указатель на объект структуры
t->y.x = 5; // обращение к элементу
Вообще говоря, a->b = (*a).b
Т.е. стрелочка это разыменование и обращение к элементу получившейся структуры. Так как результат не указатель, при обращении к элементу получившейся структуры используется точка.
Reply
int a, b;
Это всё равно что
int a;
int b;
А теперь сам майндфак.
int* a, b;
это
int* a;
int b;
Так что если нужно два указателя, нужно писать
int *a, *b;
Если увидишь где-нибудь звёздочку рядом с int, бей в рожу. Пример выше не считается.
Reply
Reply
*a=&b
здесь а должно иметь тип int**. здесь ты кладёшь адрес b в значение, находящееся по адресу а. если ты хотела положить адрес b в а, нужно было так и писать: a = &b.
2. Что за бред с массивами?
array[20] - ссылка на 20-й элемент массива, точнее в терминах Си - l-value.
т.е. можно писать как
array[20] = 5;
так и
a = array[20];
*array[20] - имеет смысл если у тебя массив указателей, и ты разыменовываешь 20-й из них. если ты хотела получить адрес 20-го элемента (т.е. указатель на 20й элемент), нужно было писать &array[20]
*s2 - разыменование указателя на структуру s2.
Reply
Reply
Leave a comment