«Структура данных» - это очень общий термин теоретической информатики.Любой метод организации управляемых машиной данных может рассматриваться как структура данных.Даже одно целое число машины является структурой данных, потому что биты можно интерпретировать несколькими способами.Чаще всего, хотя «структура данных» используется для ссылки на организацию, применяемую к большой коллекции данных: например, двоичное дерево, хеш-таблица, плоский массив или связанный список.И обычно, когда люди говорят о структурах данных, они делают это в общих терминах, не относящихся к конкретному языку программирования.
«Составной тип данных» - это термин «С» и родственные языки, что означает «любой».тип данных языка, который не является номером машины ", более или менее.Составные типы данных являются структурами данных, но не все структуры данных являются составными типами данных - номера компьютеров слишком просты, чтобы быть составными типами данных, и сложная структура данных может быть построена из нескольких составных данныхtypes.
«Класс» - это уровень техники объектно-ориентированных языков программирования, относящийся к типу данных, который определяет не только данные, но и «методы» для манипулирования данными.В C ++ все типы классов являются составными типами данных, но не все составные типы данных являются типами классов (другие являются типами «простые старые данные» или «POD»).
«String» - это универсальный типтермин для структуры данных, которая содержит последовательность маленьких машинных целых чисел, которые так или иначе представляют текст.Почти каждый язык программирования имеет некоторое представление о строке, но нет двух одинаковых.Строки по определению являются структурами данных.В семействе C строки всегда являются составными типами данных, потому что машинное целое число single недостаточно велико для нескольких символов.В объектно-ориентированных языках программирования строки обычно, но не всегда, являются типами классов.
Я надеюсь, что это, по крайней мере, выводит вас на более сложный уровень путаницы.