Указатели

Oct 21, 2011 12:05

Окей, я честно всю ночь пыталась с этим разобраться.
Но почему-то мне очень хочется сказать, что это какая-то гребаная женская логика (да, я шовинистическая свинья!).
Серьезно, на несколько страниц гуглопоиска по разным ключевым словам - ничерта непонятно, плюс разный синтаксис везде.

[Внимание! Пост проапдейчен в связи с тем, что я разобралась с вопросом.]

Стараюсь только самое главное спросить, а то вообще ничего не понятно.

1. В чем разница?
*a=&b - a указывает на значение b?
    int *a=&b - инициализация, где (int *) - тип, (a) - переменная, (&b) - значение
    *a=&b - по адресу, указанному в указателе a (*a) положили адрес b
*a=b - a указывает на значение b?
    *a=b - по адресу, указанному в a, положили значение b
a=&b - a содержит адрес b?
    a=b - в указатель a положили адрес b; теперь a указывает на b

2. Что за бред с массивами?

array[20] - указатель?
    array[20] - указатель на 20-й элемент массива (не имеющего отдельной буквы-обозначения)
    то есть: array[20]==*(array+20*sizeof(datatype))
*array[20] - указатель?
    ??? *array[20] - указатель на указатель на элемент
    ??? то есть: *array=**array; *array[20]=*(*array+20)
        (эти две строчки пока под вопросом)
array - указатель?
    array=&array[0]

3. Что творится в структурах?
struct1.struct2.name - так нельзя?
    можно
s2->name - так правильно?
    неважно, потому что можно пока что без этого обойтись :3
(*s2 - указатель на вложенную struct2)

непонятные буковки, вышел из себя в открытый космос

Previous post Next post
Up