首页 > 其他分享 >结构体

结构体

时间:2023-04-24 22:32:57浏览次数:29  
标签:初始化 struct int char stu 结构

结构体类型的声明

结构体初始化

结构体成员访问

结构体传参

1.结构体的声明

1.1结构的基础知识:结构是一些值的集合,这些值成为成员变量,结构的每个成员可以是不同类型的变量

struct tag//struct是结构体关键字,tag是对象,可以随意替换
{
   membr-list;//成员变量
}variable-list;//变量列表

以学生为例,定义一个结构体类型

#define _

#include<stdio.h>
//描述一个学生
//名字,年龄,电话,性别
//定义一个结构体类型
struct stu//struct结构体关键字,stu结构体标签,struct stu-结构体类型
{
   //成员变量
    char name[20];//名字,是一个字符串数组
    short age;//年龄,短整型,
    char tale[12];//电话,字符串数组
    char sex[5];//性别,字符串数组
}s1, s2, s3;//s1, s2,s3是三个全局的结构体变量,全局变量,,一般很少去这样使用
int main()
{
   struct stu s;//创建结构体变量 ,局部的结构体变量
   return 0;
}

也可以把结构体进行类型重定义

typedef struct stu//typedef-类型重定义
{
  
}stu2;//将结构体进行类型重定义,设置乘stu2
int main()
{
    stu2 s;//创建结构体变量,通过对结构体进行类型重定义,让它名字变得简便
    return 0;
    
}

1.2结构成员的类型:

结构的成员可以是标量,数组,指针,甚至是其他结构体,而对比数组它只能是相同类型的

2.结构体变量的定义和初始化

struct point
{
  int x;
  int y;
}p1;//声明类型的同时定义变量p1

初始化

typedef struct stu
{
  char name[20];
  short age;
  char tele[12];
  char sex[5];
}stu;
int main()
{
  stu s1 = {"张三", "20", "15249445155", "男"};//按照上面定义的类型来进行初始化,给它赋值就是初始化
  return 0;
}

结构体里面包含一个结构体

struct s//结构体成员包含了另一个结构体
{
  int a;
  char c;
  char arr[20];
  doule d;
};
struct T
{
  char ch[10];
  struct s s;
  char *pc;
};
//初始化结构体包含结构体
int main()
{                      //这里的初始化是结构体struct s 所以要初始化struct s里面的成员
  struct T t = {"hehe", {100, 'w', "hello wold", 3.14}, NULL};//这个就叫做嵌套结构体初始化,结构体里面包含结构体,凡是有结构体初始化的就要用大括号
  //假如要打印struct里面的hehe,就.ch,其他也是同等道理
  pritnf("%s\n", t.ch)
    //假如要打印struct s里面的100,则可以通过struct T t找到struct s然后在打印a
   printf("%s\n", t.s.a);//通过两次.找到原来100所在的结构体然后打印
  return 0;
}

3.结构体成员的访问

结构体变量访问成员 结构变量的成员是通过点操作符(.)----普通方式的传参使用点操作符还有指向操 作符(->)---指针传参使用的,点操作符接受两个操作数

typedef struct stu
{
  char name[20];
  short age;
  char tele[12];
  char sex[5];
}stu;
void print1(stu tmp)
{
  printf("%s\n", tmp->name);//这样也可以
  printf("%s\n", tmp.age);//也可以这样去访问结构体成员
}
int main()
{
  stu s1 = {};
  return 0;
}

4.结构体传参

结构体传参尽量去使用指针传参,因为指针相对于其他的方法会比较省空间,它不用开辟空间,会比较快,就像下面一样去使用指针来进行打印,要使用(->)访问操作符

typedef struct stu
{
  char name[20];
  short age;
  char tele[12];
  char sex[5];
}stu;
void print1(stu* tmp)
{
  printf("姓名为: %s\n", tmp->name);//这里是指针传参,要使用(->)访问操作符,而不是(.)操作符
  printf("年龄为: %d\n", tmp->age);
  printf("电话号: %s\n", tmp->tele);
  printf("性别为: %s\n", tmp->sex);
}
int main()
{
  stu s1 = {"钟易", 18, "13441551454", "男"};
  print1(&s1);
  return 0;
}

标签:初始化,struct,int,char,stu,结构
From: https://blog.51cto.com/u_16031366/6221948

相关文章

  • 数据结构之“线性表(数组)”
    前言:线性表:几个具有相同特性的数据元素的有限序列,线性表在逻辑上是线性结构,也就是连续的一条直线顾名思义“线性表”成一条线的表,在IT领域的数据结构中也有很多能看到的线性表,如“人员花名册”,“网络商品”,“图书名单系统”等等,都是一个个信息紧跟着排好供我们选择浏览等等~但这些......
  • 什么是树结构
    原文点此跳转什么是树?在生活中,大家对树肯定不陌生,小朋友都知道树不就是一类植物嘛,不管在任何地方都有各种各样的树。但是在计算机科学里面树是什么呢?一种分层数据的抽象模型,在我们前端工作中无处不在。在JavaScript中没有树这种数据结构,但是可以通过Object和Array这两个数据......
  • js树形结构中搜索某一项数据
    在树形结构中搜索checkItems值为某某某的数据,返回的是子数据。constsearchTree=(tree,checkItems)=>{letres='';letstate=false;constreadTree=(_tree,_checkItems)=>{if(state)return;for(leti=0;i<_tree.length;i+......
  • C++数据结构(队列)
    队列是先进先出的线性表顺序队列顺序存储,使用一段连续的内存空间去依次存储队列中的数据代码实现:#include<iostream>#defineMaxSize10template<typenameT>classSeqQueue{public:SeqQueue();~SeqQueue();public:boolEnQueue(constT&e);b......
  • Sql树形结构(多级菜单)查询设计方案
    MySql树形结构(多级菜单)查询设计方案 背景又很久没更新了,很幸运地新冠引发了严重的上呼吸道感染,大家羊过后注意休息和防护工作中(尤其是传统项目中)经常遇到这种需要,就是树形结构的查询(多级查询),常见的场景有:组织架构(用户部门)查询和多级菜单查询比如,菜单分为三级,一级菜单、......
  • C++数据结构(栈)
    栈是一种受限的线性表,将允许插入和删除的操作的一端称为栈顶,另一端称之为栈底,向栈中插入元素叫入栈,删除元素叫出栈。栈被称为是后进先出的线性表(LIFO)顺序栈顺序存储,即使用一段连续内存空间依次存储栈中数据。这里通过一维数组动态分配内存的方式保存数据定义代码如下:#defi......
  • 设计模式分类(创建型模式、结构型模式、行为模式) #2
    1.创建型模式创建型模式,就是创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。关注的是对象的创建,创建型模式将创建对象的过程进行了抽象,也可以理解为将创建对象的过程进行了封装,作为客户程序仅仅需要去使用对象,而不再关系创建对象过程......
  • redis linux下安装 redis启动方式 redis典型场景 redis通用命令 数据结构和内部编码 r
    内容回顾#dockerfile命令 RUNCOPYADDENVEXPOSEWORKDIRCMD:可以用新命令覆盖的ENTRYPOINT:不可以被覆盖#容器要运行,必须有个前台进程#dockerfile部署图书管理系统项目 FROMpython:3.8MAINTAINERlqzWORKDIR/soft......
  • 深入解析网页结构解析模块beautifulsoup
    今日鸡汤一声梧叶一声秋,一点芭蕉一点愁,三更归梦三更后。大家好,我是Python进阶者,今天给大家分享一个网页结构解析模块beautifulsoup。前言beautifulsoup(以下简称bs),是一款网页结构解析模块,它支持传统的Xpath,css selector语法,可以说很强大了,下面我们就来着重介绍下它的用法。安装 ......
  • TCP 三次握手过程中客户端发送的 SYN 报文的基本结构
    **以下是SYN报文示意图,展示了TCP三次握手过程中客户端发送的SYN报文的基本结构**。```SegmentHeader+----------------+------------------------------+|......