首页 > 其他分享 >C语言中的结构体:组织与管理数据的方式》 标签: C语言

C语言中的结构体:组织与管理数据的方式》 标签: C语言

时间:2024-04-10 13:31:13浏览次数:23  
标签:20 struct int 组织 C语言 char Sn 标签 结构

结构体

结构体的声明

结构体是一种复合数据类型,它允许我们将多个不同类型的数据项组合成一个单一的实体。这与其他基本数据类型(如整数、浮点数、字符等)不同,后者通常只能存储单一类型的数据。
类比:数组:一组相同元素的集合。

结构的声明

结构的声明使用 struct 关键字,后跟结构体的名称和花括号内的成员变量。

struct名称
{
成员变量1;
成员变量2;
...
};

eg:

//学生类型
struct Stu
{
char name[20];
int age;
char id[20]
};

变量创建

结构体变量可以通过两种方式创建:
1.直接在结构体后面加变量名称

struct Stu
{
char name[20];
int age;
char id[20];
}s1,s2,s3;

2.在主函数中创建

struct Stu
{
char name[20];
int age;
char id[20]
};
int main()
{
struct Stu s1,s2,s3
return 0;
}

区别:
前者是全局变量,后者是局部变量

特殊声明

结构体的特殊声明,即匿名结构体,可以在没有名称的情况下声明一个结构体类型。这种声明方式是单次使用的,通常用于函数内部,并且只能通过直接初始化的方式创建变量:

struct {
int a;
char c;
float f;
};

这种成为匿名声明,在结构体的struct后面没有结构体名称,这种声明是一次性的,并且创建变量的方式也是唯一的;
eg:

struct {
int a;
char c;
float f;
}x;

结构体的自引用

结构体的自引用是指在一个结构体中直接或间接地包含对其自身的引用。
如果一个结构体中含有指向自身类型的指针,就可能出现自引用的情况自引用结构体是指在结构体中包含指向自身类型的指针。这种结构体通常用于实现链表、树等数据结构。例如:。
eg:

struct Node{
int data;
struct Node* next;
};

上述的例子当中就是典型的自引用,也是常见的数据结构中链表结点的结构体。其中Node前的*不能去掉,不然无法确定结构体的大小。

结构体的定义和初始化

1.定义(两种创建变量的方式)

struct Sn
{
char c;
int i;
}s1,s2;
int main()
{
struct Sn s3,s4;
return 0;
}

这里的 next 指针指向 struct Node 类型的另一个实例,实现了链表节点之间的链接。
2.初始化(两种)
a.简单结构体

struct Sn
{
char c;
int i;
}s1={'q',100},//这种是按照成员顺序初始化
s2={.i=100,.c='w'}
;
int main()
{
struct Sn s3,s4;//s3,s4的初始化可以同上
return 0;
}

b.包含结构体的结构体

struct Sn
{
char c;
int i;
};
struct S{
double d;
struct Sn s1;
int arr[10];
};
int main()
{
struct S s={2.13,{'a',99},{1,2,3}};
return 0;
}

标签:20,struct,int,组织,C语言,char,Sn,标签,结构
From: https://blog.csdn.net/qq_67411584/article/details/137570627

相关文章

  • 22.C语言有关程序结构循环练习
    6、【单选题】语句while(!e);中的条件!e等价于()。[2分] ***AA、e==0B、e!=1C、e!=0D、~e9、【单选题】以下叙述正确的是()。[2分] ****BA、continue语句的作用是结束整个循环的执行B、只能在循环体内和switch语句体内使用break语句C、在循环体......
  • HTML标签属性
    1.用于给标签提供附加信息2.可以写在起始标签或者单标签中,形式如下: (1)例如:<marqueeloop="2"bgcolor="red"><!--marquee是滚动标签-->你旭哥<!--下面输入框是可以滚动的,且只能滚动两次--><inputtype="text"></marquee>......
  • 1311: 午饭问题(c语言)
    题目描述  12点又到了,特别懒的老W又懒的去买饭,但又想吃饭,于是他让老 L 给他带饭,老L答应给他带饭,不过需要老 W 先做出一道题:     W:“给你一些数字,问你出现次数最多的数字,如果出现次数最多的数字有多个请输出最小的一个,不过最多可以有1000000个数字, 这些数......
  • 【C语言】无废话指针
    一、初识指针1.1概念及演示指针就是地址,指针变量就是存放地址的变量(你可将地址理解为门牌号,找到门牌号就找到了你要找的人) 示意代码如下: inta=10; int*p=&a;//用p指向a的地址,a的类型是(int)所以p的类型是(int*) printf("a的地址:%p\n",p);//用%p打印当前p的地址 i......
  • 每日一题:C语言经典例题之平方和排序
    题目描述输入int类型范围内的N个非负整数,要求按照各个整数的各数位上数字的平方和从小到大排序,若平方和相等,则按照数值从小到大排序。例如,三个整数9、31、13,各数位上数字的平方和分别为81、10、10,则排序结果为13、31、9。输入测试数据有多组。每组数据先输入一个整数N(0<N<1......
  • 纯C语言手搓GPT-2,前OpenAI、特斯拉高管新项目火了
    众所周知,大语言模型还在快速发展,应该有很多可以优化的地方。我用纯C语言来写,是不是能优化一大截?也许很多人开过这样的脑洞,现在有大佬实现了。今天凌晨,前特斯拉Autopilot负责人、OpenAI科学家AndrejKarpathy发布了一个仅用1000行代码即可在CPU/fp32上实现GPT-2......
  • 肖恩带你看C语言·编译和链接
    来咯来咯,又见面咯,看看编译和链接的知识,了解一下就好,不必深究~~~运行环境运行环境是指运行编译后的C语言程序所需的硬件和软件环境。硬件环境:包括CPU、内存、硬盘等物理设备,这些设备提供了程序运行所需的硬件资源。软件环境:主要是指操作系统和相关的库文件。操作系统提供......
  • HTML重要标签重点及属性——之转生在异世界学前端
    表格标签table是用于定义表格的标签tr是用于定义表格的行td是用来定义表格的列,th是表头一般只有一个表头会加粗表格属性border是设置边框值为1;1是有边框,align设置居中对齐方式center,left,rightcellpadding设置文字跟单元格的间隔cellspacing设置单元格直接的间隔  ......
  • C语言分支语句和循环语句(非常详细的分支循环讲解)
    目录选择语句if-else语句if嵌套switch语句逻辑操作符!逻辑非&&逻辑与||  逻辑或循环语句while循环do-while循环for循环break和continue语句 break语句continue语句选择语句if-else语句if语句的语法形式if(表达式){语句}在C语言中非0为真,0为假......
  • C语言08-函数(递归、字符串、日期时间、数学计算函数),指针
    第11章函数11.7递归函数​ ——相当于俄罗斯套娃;一个程序未执行结束会挂起,相当于堆栈一个函数在函数体内又调用了本身,我们称为递归调用,这样的函数就是递归函数。递归函数成功执行需满足以下两个条件:(1)必须有一个明显的结束条件。(2)必须有一个趋近于结束条件的趋势......