2.1. В одном файле у меня есть описание char a[6], а в другом я объявил extern char *a.
Почему это не работает?
2.2. Но я слышал, что char a[] эквивалентно char *a.
2.3. Тогда что же понимается под "эквивалентностью указателей и массивов" в С?
2.4. Тогда почему объявления указателей и массивов взаимозаменяемы в в качестве формальных параметров?
2.5. Как массив может быть значением типа lvalue, если нельзя присвоить ему значение?
2.6. Почему sizeof неправильно определяет размер массива, который передан функции в качестве параметра?
2.7. Кто-то объяснил мне, что массивы это на самом деле только постоянные указатели.
2.8. C практической точки зрения в чем разница между массивами и указателями?
2.9. Я наткнулась на шуточный код, содержащий "выражение" 5["abcdef"].
Почему такие выражения возможны в С?
2.10. Мой компилятор ругается, когда я передаю двумерный массив функции, ожидающей указатель на указатель.
2.11. Как писать функции, принимающие в качестве параметра двумерные массивы, "ширина" которых во время компиляции неизвестна?
2.12. Как объявить указатель на массив?
2.13. Исходя из того, что ссылки на массив превращаются в указатели, скажите в чем разница для массива
int array[NROWS][NCOLUMNS];
между array и &array?
2.14. Как динамически выделить память для многомерного массива?
2.15. Как мне равноправно использовать статически и динамически задаваемые многомерные массивы при передаче их в качестве параметров функциям?
2.16. Вот изящный трюк: если я пишу
int realarray[10];
int *array = &realarray[-1];,
то теперь можно рассматривать "array" как массив, у которого индекс первого элемента равен единице.
2.17. Я передаю функции указатель, который она инициализирует
...
int *ip;
f(ip);
...
void f(ip)
int *ip;
{
static int dummy = 5;
ip = &dummy;
}
но указатель после вызова функции остается неизменным.
2.18. У меня определен указатель на char, который указывает еще и на int, причем мне необходимо переходить к следующему элементу типа int. Почему
((int *)p)++;
не работает?
2.19. Могу я использовать void ** , чтобы передать функции по ссылке обобщенный указатель?