вот моя странная проблема:в C Структуры рассматриваются в качестве указателей
У меня есть некоторый код, где раньше основной(), я объявляю несколько структур, как глобальные переменные. Функции, которые я использую для структур в main(), обычно требуют указателей на реальные аргументы, и поэтому наивно, я ввожу, например.
функция (& struct.content);
Затем я получаю сообщение об ошибке, говоря, что это неправильный тип аргумента, потому что это двойной указатель (**) вместо одного (*). Затем, когда я беру амперсанд , он работает! Другими словами, эти структуры обрабатываются так, как если бы они были уже указателями, и я думаю, что это в конечном итоге вызывает проблемы с распределением памяти позже в коде.
Я действительно ценю любое освещение, которое любой может обеспечить! Я просто ученый, а не настоящий программист, и такие вещи продолжаются, чтобы укусить меня :(
Показать минимальный пример кода, который демонстрирует проблему. –
Не могли бы вы вставить некоторый * настоящий * код? 'struct.content' не имеет никакого смысла, поскольку' struct' является ключевым словом. – Bathsheba
Я предполагаю, что 'content' объявлен как некоторый указатель (или массив) в определении' struct'. В этом случае это не структура, действующая как указатель, это фактические данные внутри структуры, действующей как указатель (потому что она одна или может деградировать до одного). Вы бы передали '& somestruct.content' только если вам нужен указатель на указатель, хранящийся в самой структуре (скажем, если он может« переделать »его или что-то еще и будет обновлять структуру на месте). – ShadowRanger