首页 > 其他分享 >C语言 结构体

C语言 结构体

时间:2024-09-09 22:27:10浏览次数:9  
标签:typedef name student1 C语言 Student age 结构

一,什么是结构体

结构体(struct)是一种用户用户的定义类型,它允许将多个不同类型的数据组合在一起,形成一个复合的数据类型。结构体通常用于表示一个具有多种属性的实体,例如一个学生的姓名,学号,年龄,成绩等等。

在c语言中,结构体的定义通常包括以下几个部分

1.名称:结构体标识符,用于引用该结构体类型

2.成员:结构体内部包含变量,可以是不同类型的数据

例如:

struct Student {  
    char name[50];  
    int age;  
    float grade;  
};  

struct Student student1;  
strcpy(student1.name, "Alice");  
student1.age = 20;  
student1.grade = 90.5;  

在这个例子中,Student是一个结构体类型,包含了学生的姓名、年龄和成绩三个成员。

二,用typedef声明一个结构体

typedef 是 C 和 C++ 编程语言中的一个关键字,用于为已有的数据类型创建一个新的别名。使用 typedef 可以使代码更加简洁和易于理解,尤其是在处理复杂数据类型时。

例如:

1.基本数据类型的别名

typedef unsigned long ulong;  
ulong a = 1000; // 现在可以使用 ulong 作为 unsigned long 的别名

2.结构体的别名

typedef struct {  
    char name[50];  
    int age;  
} Person;  

Person p1; // 直接使用 Person 来定义结构体变量

3.指针类型的别名

typedef int* IntPtr;  
IntPtr ptr; // 现在可以使用 IntPtr 作为 int* 的别名

typedef的优点有:

  • 可读性:使用别名可以使代码更易于理解。
  • 简化代码:减少了重复书写复杂类型的需要。
  • 便于维护:如果需要更改类型,只需修改 typedef 声明,而不需要在代码中多处修改。

注意事项:

  • typedef 不会创建新的数据类型,它只是为现有类型提供了一个新的名称。
  • typedef 声明通常放在头文件中,以便在多个源文件中共享。

了解完typedef后我们来看一个用typedef声明结构体的示例:

#include <stdio.h>  
#include <string.h>  

// 使用typedef声明结构体  
typedef struct {  
    char name[50];  
    int age;  
    float grade;  
} Student;  

int main() {  
    // 使用新名称定义结构体变量  
    Student student1;  
    
    // 初始化结构体成员  
    strcpy(student1.name, "Alice");  
    student1.age = 20;  
    student1.grade = 90.5;  

    // 输出结构体成员  
    printf("Name: %s\n", student1.name);  
    printf("Age: %d\n", student1.age);  
    printf("Grade: %.2f\n", student1.grade);  

    return 0;  
}

在这个例子中,typedef用于定义一个名为Student的结构体类型。之后,我们可以直接使用Student来声明结构体变量,而不需要每次都写struct Student。这样可以提高代码的可读性和简洁性。

三,结构体类型变量的引用

结构体类型变量的引用是指在程序中使用结构体变量时,如何访问和操作其成员。结构体变量可以通过点运算符(.)来引用其成员。

假设我们定义了一个结构体类型 Student,并创建了一个结构体变量 student1

struct Student {  
    char name[50];  
    int age;  
    float grade;  
};  

struct Student student1;

引用结构体成员

1.访问成员 使用点运算符来访问结构体的成员。例如:

strcpy(student1.name, "Alice"); // 设置姓名  
student1.age = 20;               // 设置年龄  
student1.grade = 90.5;           // 设置成绩

2.输出成员 可以通过 printf 函数输出结构体成员的值:

printf("Name: %s\n", student1.name);  
printf("Age: %d\n", student1.age);  
printf("Grade: %.2f\n", student1.grade);

结构体类型变量的引用使得我们能够方便地访问和操作结构体中的各个成员。通过点运算符,可以直接对结构体的属性进行读写操作。

标签:typedef,name,student1,C语言,Student,age,结构
From: https://blog.51cto.com/u_16428727/11963587

相关文章

  • C语言程序设计-练习篇
    不知道结果仍义无反顾地才是勇士。三,打印整数二进制的奇数位和偶数位题目内容:获取一个整数二进制序列中所有的奇数位和偶数位,分别打印出二进制序列#include<stdio.h>//打印整数二进制的奇数位和偶数位intmain(){ inti=0; intnum=0; scanf("%d",&num); //......
  • C语言中数组的知识(后面有三子棋小游戏)
    一、数组的创建和初始化    数组是一组同类型元素的集合,合理运用数组可以帮我们完成一些复杂的操作    1.1一维数组的创建和初始化    一维数组创建的方式:type_tarr_name[const_n];//type_t是指数组的元素类型//const_n是一个常量表达式,用......
  • 浙大数据结构慕课课后题(03-树3 Tree Traversals Again)
    题目翻译:题解:         #include<bits/stdc++.h>usingnamespacestd;voidCreatTree();voidsolve(intpreL,intinL,intpostL,intn);intPre[35],In[35],Post[35];int N;intmain(){ cin>>N; getchar(); CreatTree(); solve(0,0,0,N); for......
  • 数据结构与算法 第12天(排序)
    一、排序方法分类按照数据存储介质:内部排序:数据量不大、数据在内存,无需内外存交换数据外部排序:数据量较大、数据在外存(文件排序)将数据分批调入内存排序,结果放到外存按照比较器个数:串行排序:单处理机(同一时刻比较一对元素)并行排序:多处理机(同一时刻比较多对元素)按主......
  • 贪吃蛇项目实现(C语言)——附源码
    前言贪吃蛇是一款十分经典的游戏,其通过控制贪吃蛇的上下左右移动来吃食物,延长自己的身体,也会因为撞到墙体和自身而死亡。下面我们通过C语言来实现贪吃蛇。1.技术要点C语言枚举,结构体,链表,动态内存管理,预处理指令,函数,Win32API等。2.Win32API 要使用Win32API我们就需......
  • C语言的历史
    C语言的历史目录引言C语言的起源2.1计算机编程语言的早期历史2.2BCPL和B语言C语言的诞生3.1丹尼斯·里奇与贝尔实验室3.2Unix系统的发展C语言的标准化进程4.1ANSIC4.2ISOC标准C语言的应用5.1操作系统开发5.2嵌入式系统5.3编译......
  • 数据结构—单链表的基本操作
    目录1.单链表的初始化2.求表长操作3.按序号查找结点4.按值查找表结点5.插入结点操作6.删除结点操作7.头插法建立单链表8.尾插法建立单链表1.单链表的初始化 带头结点: boolInitList(LinkList&L){       //带头结点的单链表的初始化  L=(......
  • 鹏哥C语言14---数组
    //------------------------------------------------------------------9.数组//--------------------------------------------------------9.1数组的定义// arr[]={,,,,,};//数组里边可以存放一组相同类型的元素#include<stdio.h>intmain(){   //---------......
  • C ++ 从单链表到创建二叉树到二叉树的遍历(结构体)
    首先我们要了解二叉树的数据结构是什么,本质上二叉树是一个有两个节点的链表,我们先了解的单链表的相关定义单链表创建一个朴素的单链表#include<iostream>usingnamespacestd;structNode{intval;Node*next;Node(intx):val(x),next(nullptr){}......
  • C语言学习 --- 修饰变量的关键字
    修饰变量的关键字        修饰变量的关键字+数据类型+变量名 auto:自动默认不写register:        register是作为寄存器的变量,就是在CPU里面存储的地方作用:        将频繁进行IO操作的变量声明成寄存器变量,节省数据读取操作的时间,提高执行效率......