← Back to Index
Research & Engineering Archive

LPC 12. Data Structure

By Jingnan Huang · March 31, 2025 · 1335 Words

Last Edit: 3/31/25

Data Structure,即一种储存数据的方式,不同的结构会有不同的性能优势和劣势,即被运用到不同的工作上

12.1 What are Data Structures
#

12.1.1 Define a data Structure
#

12.1.1.1 Method 1: Define and Declare Separately
#

struct Neuron {
  int neuronNum;
  double input1, input2;
  char areaName[20];
 };

 int main(void) {
   struct Neuron neuron;
   return 0;
}

11.1.1.2 Method 2: Define and Declare in same statement
#

struct Neuron {
    int neuronNum;
    double input1, input2;
    char areaName[20];
} neuron;
neuron
 ├── neuronNum       // int 类型,占据一段内存
 ├── input1          // double 类型
 ├── input2          // double 类型
 ├── areaName[0]     // char 类型,字符数组的第一个元素
 ├── areaName[1]
 ├── ...
 └── areaName[19]    // 最后一个字符

12.1.2 Access Members of a data Structure
#

12.1.3 Initialize a data Structure
#

#include <stdio.h>
struct Neuron {
  int neuronNum;
  double input1, input2;
  char areaName[20];
} globalNeuron = {1, 9.1, 8.3, "Frontal Lobe"};
int main(void) {
  struct Neuron neuron = {3, 90, 23, "Frontal Cortex"};
  printf("globalNeuron.neuronNum = %d\n", globalNeuron.neuronNum);
  printf("globalNeuron.input1 = %.2lf\n", globalNeuron.input1);
  printf("globalNeuron.input2 = %.2lf\n", globalNeuron.input2);
  printf("globalNeuron.areaName = %s\n\n", globalNeuron.areaName);
  printf("neuron.neuronNum = %d\n", neuron.neuronNum);
  printf("neuron.input1 = %.2lf\n", neuron.input1);
  printf("neuron.input2 = %.2lf\n", neuron.input2);
  printf("neuron.areaName = %s\n\n", neuron.areaName);
  return 0;
}

12.1.4 Creating an alias for a data Structure
#

#include <stdio.h>

typedef char byte;  // 定义 char 的别名为 byte

int main(void) {
    byte oneLetter = 'S';              // 相当于 char oneLetter = 'S';
    byte sentence[20] = "Snefru";      // 相当于 char sentence[20] = "Snefru";

    printf("oneLetter: %c\n", oneLetter);     // 打印单个字符
    printf("sentence: %s\n", sentence);       // 打印字符串
    return 0;
}

Give Structure a alias
#

typedef struct Neuron {
    int neuronNum;
    double input1, input2;
    char areaName[20];
} Neuron; 
int main(void) {
    Neuron neuron;                      // 使用别名定义变量
    neuron.input1 = 7.9;                // 给结构体成员赋值
    printf("neuron.input1 = %.2lf\n", neuron.input1);  // 打印输出
    return 0;
}

12.2 Pointers to Data Structures
#

12.2.1 Access members through pointes
#

typedef struct Neuron {
    int neuronNum;
    double input;
} Neuron;

int main(void) {
    Neuron neuron = {901, 5.67};          // 定义并初始化一个结构体变量 neuron
    Neuron *pNeuron = &neuron;            // 定义结构体指针 pNeuron,指向 neuron

Dereference and dot Operator
#

Arrow Operator
#

12.2.2 Dynamic Memory Allocation of Data Structures
#

typedef struct Neuron {
    int neuronNum;
    double input;
} Neuron;

int main(void){
    Neuron *pNeuron;
}

image.png

image.png

image.png