【问题标题】:Data types vs Data structures [closed]数据类型与数据结构
【发布时间】:2021-05-08 12:13:47
【问题描述】:

C语言中的struct是数据类型还是数据结构?根据维基百科,数组是一种复合数据类型,但数组不是数据结构吗?数据结构与数据类型有何不同。 提前致谢。

【问题讨论】:

  • 这对于Computer Science 来说似乎比Stack Overflow 更好。
  • intfloat 是数据类型,但它们不是结构。数据结构是一种可以以某种有组织的方式包含多个值的类型。
  • 数据结构是数据在内存中的组织方式,数据类型指定我们存储在内存中的数据类型,在一天结束时它的所有位和字节,所以简而言之,每种数据类型都是也是一种数据结构。
  • @IrAM 不错,但我想说,每种数据类型使用某种数据结构来存储数据。
  • 这些词的定义不像数学定义那样明确。通常,数据结构意味着一些额外的逻辑或约束来访问解决特定问题的数据。数组解决了在 O(1) 时间内访问或改变元素的问题,数据结构也是如此。这是在“数据结构和算法”的背景下。在日常谈话中,您可以将任何旧数据称为数据结构。

标签: c data-structures struct types


【解决方案1】:

An array is a data type in C, so is a structure.

data structure 是一种组织数据的方式,可以使用一种或多种数据类型。

【讨论】:

    【解决方案2】:

    struct 是“结构”的一种镜头形式。它们是一种组织数据的方式。可以使用多种类型的原始(或复杂)成员类型来创建结构。例如,

    struct EmployeeRecord {
        float mSkillLevel = 1.0f;
        int mWorkingYears = 0;
    };
    

    另一方面,数组是相似类型记录的集合。这意味着该数组仅包含一种类型的多个数据。数组将如下所示,

    EmployeeRecord employees[10];    // Stores records of 10 employees.
    int numbers[15];    // Stores 15 numbers.
    

    现在数组也是一种数据结构。这意味着上面的示例可以像这样使用struct 进行分解和实现,

    struct RecordArray10 {
        EmployeeRecord record1;
        EmployeeRecord record2;
        EmployeeRecord record3;
        ...
    } employees;
    
    struct NumArray15 {
        int num1;
        int num2;
        int num3;
        ...
    } numbers;
    

    现在这些都有索引记录的实际问题。为此,我们需要将其转换为其成员类型(EmployeeRecord)指针,然后我们可以对其进行索引,

    EmployeeRecord* pArray = (EmployeeRecord*)&numbers;
    EmployeeRecord& firstElement = pArray[0];    // Indexing the first element.
    

    为了方便使用,C 直接使用我提到的第一种语法提供了对数组的支持。

    数组有两种类型,

    1. 静态数组(在编译时解析,无法调整大小)。
    2. 动态数组(可以在运行时调整大小)。

    参考:
    Wikipedia: Data Structure
    Wikipedia: Array data structure
    Array vs Data Structure

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      相关资源
      最近更新 更多