Автор: cheops (05.03.2012 в 17:44)
Следует понимать, что массивы и указатели в C это одно и тоже. Используя только имя, не указывая на конкретный элемент нельзя производить сравнение с базовым типом. Вот так не правильно
int arr[50];
int num;
...
if(arr == num) |
это попытка сравнить 50 целых значений с одним - нужны телодвижения, чтобы из 50 элементов выбрать один. Указатели это те же массивы, только более гибкие (хотя и более сложные в использовании). Если не сложно гляньте картинку во вложении (там массив из 4 элементов представлен в двух одинаковых формах - это совершенно две одинаковы с точки зрения C записи того, факта, что в области памяти идет 4 элемента char подряд, только в массиве это указано явно, а в указателе это знание придется передавать как-то иначе). Поэтому когда вы берете в руки указатель, нужно обязательно с ним что-то сделать (причем не вылазя за границы области памяти, на которую он указывает), так как он указывает на много элементов... вам же нужно из этой массы взять один элемент. Т.е. нельзя писать так
можно сравнивать отдельные элементы, так
или так
иначе компилятор протестует и правильно делает.