Подтвердить что ты не робот

Объясните разницу между структурой * данных * и типом данных *

При попытке ответить В чем разница между составным типом данных и структурой данных? Я понял, что, хотя у меня есть четкое представление о том, какой тип данных, и как это не то же самое, что структура данных, я не могу разделить слова. Если бы вы преподавали вводный курс CS, как бы вы объяснили разницу?

4b9b3361

Ответ 1

Структура данных представляет собой абстрактное описание способа организации данных, позволяющих эффективно выполнять определенные операции над ним. Например, двоичное дерево представляет собой структуру данных, а также кучу Фибоначчи, дерево AVL или skiplist. Теоретики описывают структуры данных и доказывают их свойства, чтобы показать, что определенные алгоритмы или задачи могут быть эффективно решены при определенных предположениях.

Тип данных - это (потенциально бесконечный) класс конкретных объектов, все из которых имеют некоторое свойство. Например, "integer" - это тип данных, содержащий все бесконечно много целых чисел, "строка" - это тип данных, содержащий все бесконечно много строк, а "32-разрядное целое число" - это тип данных, содержащий все целые числа, выражаемые в тридцать два бита. Нет требования, чтобы тип данных был примитивным в языке - например, в С++, тип int является примитивным, как и этот:

struct MyStruct {
    int x, y;
};

В этом случае MyStruct - это тип данных, представляющий все возможные объекты с меткой MyStruct, в которых есть два int, помеченные как x и y.

Возможно иметь тип данных, представляющий все возможные экземпляры структуры данных. Например, вы можете кодировать двоичное дерево поиска с этим типом данных:

struct BST {
    int data;
    BST* left, *right;
};

Короче говоря, структура данных - это математический объект с некоторым набором свойств, который может быть реализован различными способами как типы данных. Тип данных - это просто класс значений, который может быть конкретно сконструирован и представлен.

Ответ 2

Тип данных больше не может быть уменьшен, тогда как структура данных может, поскольку она состоит из нескольких полей разных данных.

Однако, скорее всего, я бы использовал аналогию - тип данных - это атом, а структуры данных - молекулы. (да, я знаю, атомы могут быть разделены и т.д., но аналогия должна задерживаться для этой цели).

Ответ 3

тип данных - это любой тип, включая базовые типы, подобные int, но также распространяющиеся на структуры. структуры всегда состоят из базовых типов и/или других структур.

Таким образом, int - это тип данных, но не структура. В то время как struct point {int x; int y; } является структурой и типом данных.