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

C语言结构体

时间:2024-12-22 14:43:29浏览次数:3  
标签:struct int s1 C语言 Student age 结构

C语言结构体--Structures(1)

Basic introduction without pointer

什么是结构体?

结构体是C语言中一种复合数据类型,它允许我们将不同类型的数据组合在一起,形成一个新的数据类型

比如说最常见的int,char等类型,我们定义一个变量时候常用int a,char ch...

同样我们可以将结构体视为我们自定义的数据类型:struct Student s1 ,或者如果用了typedf的话可以这样:Student s1 。

结构体的定义方式

  • 先定义结构体类型,再定义结构体变量
#include<stdio.h>
struct Student{
    int age;
    char name[10];
};

int main(){
    struct Student s1={14,"XiaoMing"};
}

值得注意的是,在定义结构体变量的时候,用大括号可以直接初始化(如上所示)。

但是如果只是定义变量未初始化,后续想要赋值不可以用大括号统一赋值,如下打咩打咩!

#include<stdio.h>
int main(){
    struct Student s1;
    s1={14,"XiaoMing"};//报错!!!
}

可以的方法只能是结构体成员中一个个赋值

#include<stdio.h>
int main(){
    struct Student s1;
    s1.age=14;
}
  • 定义类型的同时定义变量
#include<stdio.h>
#include <string.h>
struct Student{
    int age;
    char name[10];
}s1,s2;

int main(){
    s1.age=14;
    strcpy(s1.name,"XiaoMing");
}
  • 使用typedef给结构体类型取别名

#include<stdio.h>

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

int main(){
    Student s1={14,"XiaoMing"};
}

结构体数组

结构体数组可以定义一个存储多个结构体的数组:

struct Student class[40];  // 定义一个可以存储40个学生信息的数组

// 访问结构体数组成员
strcpy(class[0].name, "张三");
class[0].age = 18;
class[0].score = 95.5;

结构体嵌套

结构体的嵌套结构体中的成员也可以是另一个结构体:

struct Date {
    int year;
    int month;
    int day;
};

struct Student {
    char name[50];
    int age;
    float score;
    struct Date birthday;  // 结构体嵌套
};

// 访问嵌套结构体的成员
struct Student student1;
student1.birthday.year = 2000;
student1.birthday.month = 1;
student1.birthday.day = 1;

结构体作为函数参数

// 定义一个打印学生信息的函数
void printStudent(struct Student stu) {
    printf("姓名:%s\n", stu.name);
    printf("年龄:%d\n", stu.age);
    printf("成绩:%.1f\n", stu.score);
}

struct Student student1={"XiaoMing",14,100};
// 调用函数
printStudent(student1);

标签:struct,int,s1,C语言,Student,age,结构
From: https://www.cnblogs.com/LuKemi3/p/18622111

相关文章

  • Zig 结构体和枚举
    在Zig编程语言中,结构体(struct)和枚举(enum)是两种基本的数据类型。结构体和枚举是定义和使用自定义数据类型的两种主要方式。结构体和枚举提供了更高层次的数据组织和类型安全,适用于不同的编程场景。结构体(Struct):用于将相关变量组合成一个复合数据类型。结构体可以包含字段和......
  • 还是c语言bug领域大神
    嗨嗨嗨,既好吃又管饱,就来看bug系列双等号表判断,单等号表赋值在很多程序中,我们需要判断一个值是不是一个进行下一个条件的值,这时候需要用双等号来判断。if(data==-1){break;}如果data等于-1,那么打破循环。但是等号还有功能就是赋值,如果上......
  • 学霸带你游戏化玩转 C# 条件语句和循环结构
    控制结构:编程的核心逻辑控制结构是编程语言中的核心元素之一,它决定了程序的流程控制、执行顺序和决策逻辑。无论是简单的条件判断,还是复杂的循环控制,掌握好这些结构能够帮助开发者设计出高效、可靠的程序。在游戏开发中,控制结构不仅仅是编程工具,它们构建了游戏机制的骨架,决定......
  • 【数据结构与算法】深度优先搜索:树与图的路径探寻之道
    一、引言在计算机科学领域,树与图的路径搜索是一个基础且重要的问题,而深度优先搜索算法(DepthFirstSearch,简称DFS)则是解决此类问题的经典算法之一。深度优先搜索算法通过从起始节点开始,沿着一条路径尽可能深地探索,直到无法继续或达到目标节点,然后回溯到前一步,继续探索其......
  • 实验6_C语言结构体、枚举应用编程
    任务4#include<stdio.h>#defineN10typedefstruct{charisbn[20];//isbn号charname[80];//书名charauthor[80];//作者doublesales_price;//售价intsales_count;//销售册数}Book;//输出......
  • Go语言中context 结构原理, 使用场景和用途
    Go语言中context结构原理在Go语言中,context是一个用于在API边界之间传递请求范围的值、取消信号、截止时间等信息的机制。它主要用于处理跨API边界的请求取消、超时控制以及传递请求范围内的共享数据。context的设计目标是为了解决在并发编程中,特别是Goroutines之间相互协作时......
  • pta 7-363 sdut-C语言实验-简单字符串排序
    题解:#include<iostream>#include<string>usingnamespacestd;//定义学生结构体structstudent{stringname;intscore;};//快速排序实现单词字典序排序voidQuickSort(studentstu[],intleft,intright){if(left>=right)return;inti=left,j=r......
  • Redis篇-13--数据结构篇5--List内存模型(LinkedList,zipList,quicklist,Listpack,内存对齐,
    Redis的List(列表)数据类型是一个双向链表,允许从两端高效地插入和删除元素。为了提高性能和内存利用率,Redis对List进行了多种优化。特别是在Redis3.2版本中引入的quicklist结构,和Redis6.2版本中引入Listpack结构(替代之前的ziplist压缩列表),逐步提升List的性能。简单概括如下......
  • 初探C语言|一篇文章让你拿捏指针(初阶指针)
    文章目录前言什么是指针?指针变量指针类型定义方式:常见指针类型:指针类型的意义示例:指针加减整数输出结果分析:指针的解引用野指针定义:野指针是未初始化或指向非法内存的指针,可能导致程序崩溃或内存泄漏。常见的野指针情况:1.指针未初始化:2.指针越界访问:3.指针指向已释......
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(单分支结构和双分支结构)
    (一)、单分支结构在C++中,单分支结构通常指的是“if语句”。if语句是选择结构中最基础的语句,它允许程序根据条件是否为真来执行不同的代码块。单分支if语句的基本语法如下:if(condition){//条件为真时执行的代码}这里的condition是一个布尔表达式,如果它的值为true,则执行花......