您的位置:58脚本 > c结构体用法 C 结构体示例

c结构体用法 C 结构体示例

2023-03-14 12:32 C语言教程

c结构体用法 C 结构体示例

c结构体用法

C语言中的结构体是一种用户自定义的数据类型,它可以用来存储不同类型的数据。它可以将多个不同类型的数据存储在一个单独的变量中,这样就可以方便地处理这些数据。

使用结构体时,首先需要定义一个结构体,然后声明一个变量来存储该结构体。定义一个结构体时,需要使用struct关键字,然后在大括号内声明所有成员变量。例如:

struct student { 
    char name[20]; 
    int age; 
    float score; 
};

上面的代码声明了一个student结构体,其中包含三个成员变量name、age和score。声明完成之后,就可以使用student来声明一个新的student变量了。例如:

struct student stu;

上面的代码声明了一个新的student变量stu。此时stu就是一个student类型的对象,其中包含name、age和score三个成员变量。要访问这三个成员变量,则需要使用“.”运算符来访问。例如:

strcpy(stu.name, "Tom");  // 赋值name 
stu.age = 20;               // 赋值age 
stu.score = 90.5;           // 赋值score 

上面的代码分别将name、age和score三个成员赋予了不同的值。此外,也可以使用“->”运算来访问成员变量。例如:

struct student *ptr;   // 声明一个student 类型的指针ptr   ptr->name = "Tom";   // 赋值name   ptr->age = 20;     // 赋值age   ptr->score = 90.5; // 赋值score 

上面代衠中ptr是一个student 类型的指针(即ptr执行student 类型对象地址) ;考虑到ptr是一个指针 ︴因此不能直接使用“.”运街去访间成呗 及耳 ︴必 须使用“- > ”运街原 才能够正常场 力 我 我 我 我 我 我 我 我 我 我 我 我 我

C 结构体示例

学习C - C结构体示例

双向链接列表

双向列表可以通过任一方向列出。

除了指向下一个结构体的指针之外,我们还需要在每个结构体中添加一个额外的指针来存储先前结构体的地址。


#include <stdio.h> 
#include <ctype.h> 
#include <stdlib.h> 

typedef struct Dog Dog;       // Define Dog as a type name 
  
struct Dog                      // Structure type definition 
{ 
  int age; 
  int height; 
  char name[20]; 
  char father[20]; 
  char mother[20]; 
  Dog *next;                    // Pointer to next structure 
  Dog *previous;                // Pointer to previous structure 
}; 
int main(void) { 
  Dog *first = NULL;            // Pointer to first Dog 
  Dog *current = NULL;          // Pointer to current Dog 
  Dog *last = NULL;             // Pointer to previous Dog 
  
  char test = "0";               // Test value for ending input 
  
  for( ; ; ) { 
    printf_s("Do you want to enter details of a%s Dog (Y or N)? ", first != NULL?"nother" : ""); 
    scanf_s(" %c", &test, sizeof(test)); 
    if(tolower(test) == "n") 
      break; 
  
    // Allocate memory for each new Dog structure 
    current = (Dog*) malloc(sizeof(Dog)); 
    if(first == NULL){ 
      first = current;            // Set pointer to first Dog 
     current->previous = NULL; 
    } else { 
      last->next = current;       // Set next address for previous Dog 
      current->previous = last;   // Previous address for current Dog 
    } 
    printf_s("Enter the name of the Dog: "); 
    scanf_s("%s", current->name, sizeof(current->name)); 

    printf_s("How old is %s? ", current->name); 
    scanf_s("%d", &current->age); 

    printf_s("How high is %s ( in hands )? ", current -> name ); 
    scanf_s("%d", &current->height); 

    printf_s("Who is %s"s father? ", current->name); 
    scanf_s("%s", current->father,sizeof(current->father)); 

    printf_s("Who is %s"s mother? ", current->name); 
    scanf_s("%s", current->mother, sizeof(current->mother)); 

    current->next = NULL;         // In case it"s the last... 
    last = current;               // ...save its address 
  } 

  // Now tell them what we know. 
  printf_s("n"); 
  while(current != NULL)          // Output Dog data in reverse order 
  { 
    printf_s("%s is %d years old, %d hands high,", 
               current->name, current->age, current->height); 
    printf_s(" and has %s and %s as parents.n", current->father, 
                                            current->mother); 
    last = current;               // Save pointer to enable memory to be freed 
    current = current->previous;  // current points to previous in list 
    free(last);                   // Free memory for the Dog we output 
    last = NULL; 
  } 
  first = NULL; 
  return 0; 
} 

上面的代码生成以下结果。



阅读全文
以上是58脚本为你收集整理的c结构体用法 C 结构体示例全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58脚本 58jiaoben.com 版权所有 联系我们
桂ICP备12005667号-28 Powered by CMS