«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > В C и C ++, почему массивы не могут быть назначены напрямую, но в структурах все в порядке?

В C и C ++, почему массивы не могут быть назначены напрямую, но в структурах все в порядке?

Опубликовано в 2025-04-18
Просматривать:892

Why Can't I Directly Assign Arrays in C and C  , But I Can Within Structs?

Array Assignment в C и C

C и C Разрешение Memberwise at Arrays внутри структур, но не в целом. Такое поведение является результатом исторической эволюции языков.

Первоначально, массивы в C были смоделированы как указатели в памяти, известные как «приготовленные массивы». Когда были введены структуры, массивы в структурах обрабатывались по -разному для обеспечения безопасности памяти. Это позволило назначить массивов в рамках структур без ущерба для совместимости с существующим кодом.

Напротив, назначение массивов за пределами структур не поддерживалось в исходном дизайне C. Это было связано с озабоченностью по поводу указательного перерыва и отсутствия информации о размерах для массивов, объявленных как параметры функции. Чтобы избежать введения ошибок и проблем совместимости, явное назначение с использованием MEMCPY было предпочтительным.

, однако, как отмечено Лютером Блиссеттом, спецификация C относительно назначения структуры явно допускает Memberwise присвоение содержащихся массивов. Это был непреднамеренный побочный эффект дизайна, но он был воспринят как способ облегчения копирования данных в рамках структур без нарушения устоявшихся моделей.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3