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)
непонятные буковки,
вышел из себя в открытый космос