首页 > 其他分享 >结构体

结构体

时间:2023-12-03 16:56:38浏览次数:27  
标签:struct char Mryan2005 student 结构 id name

定义

结构是一种复合的数据类型,可以包含多个不同类型的成员变量。
我们可以通过结构类型声明结构,并通过结构变量来访问结构的成员。结构变量可以赋初值,可以进行运算,还可以作为函数参数传递。

How to 声明

看下面的例子——声明一个有关学生的结构体
它就可以声明在变量的内部,也可以在变量的外部。

struct student {
    int id;
    char *name;
};

How to 定义

使用上还算简单,就像是平常用变量一样

#include <stdio.h>
struct student {
    char *id;
    char *name;
};
int main() {
    struct student Mryan2005;
    Mryan2005.id = "007";
    Mryan2005.name = "Mryan2005";
    printf("%s's id is %s", Mryan2005.name, Mryan2005.id);
}

程序里面就会输出这样的东西

Mryan2005's id is 007

其实,还有第二种办法。

#include <stdio.h>
struct {
    char *id;
    char *name;
} Mryan2005;
int main() {
    Mryan2005.id = "007";
    Mryan2005.name = "Mryan2005";
    printf("%s's id is %s", Mryan2005.name, Mryan2005.id);
}

当然,程序里面就会输出这样的东西

Mryan2005's id is 007

但这样的做法也只是因为这个结构体是暂时的。
最后一种写法是这样的

#include <stdio.h>
struct student {
    char *id;
    char *name;
} Mryan2005;
int main() {
    Mryan2005.id = "007";
    Mryan2005.name = "Mryan2005";
    printf("%s's id is %s", Mryan2005.name, Mryan2005.id);
}

当然,程序里面就会输出这样的东西

Mryan2005's id is 007

结构在内存中的体现
还是这个结构体

struct student {
    int id;
    char *name;
};

我们可以先看一下sizeof(struct student)的结果是多少

#include <stdio.h>
struct student {
    char *id;
    char *name;
};
int main() {
    printf("size of student is %d", sizeof(struct student));
}

它的size是16
至于为什么等于16,那是因为我在64位的操作系统中运行,所以,一个指针变量为8个字节;如果在32位系统下,则指针占用4字节。

初始化

第一种办法

#include <stdio.h>
struct student {
    int order
    char *id;
    char *name;
} Mryan2005;
int main() {
    struct student Mryan2005 = {01, "007", "Mryan2005"};
}

这就出现了这样的情况
image

第二种办法

#include <stdio.h>
struct student {
    int order;
    char *id;
    char *name;
} Mryan2005;
int main() {
    struct student Mryan2005 = {.id = "007", .name = "Mryan2005"};
}

idname被赋予了具体的值,而order没有,那结果就是order0
这就会是这样子了

结构运算

整体运算

#include <stdio.h>
struct student {
    int order;
    char *id;
    char *name;
} Mryan2005;
int main() {
    Mryan2005 = (struct student){ 1, "007", "Mryan2005"};
}

变量与变量间直接赋值

就是这样

#include <stdio.h>
struct student {
    int order;
    char *id;
    char *name;
};
int main() {
    struct student Mryan2005 = (struct student){ 1, "007", "Mryan2005"};
    struct student Mryan2003 = Mryan2005; 
}

先说一下,(struct student){ 1, "007", "Mryan2005"}是什么意思?
这个意思就是,将{ 1, "007", "Mryan2005"}强制转换成struct student类型
我们看一下,结果会是怎么样
image
这就是数组做不了的,结构可以做。
那改动一个值,又会是怎么样的结果

#include <stdio.h>
struct student {
    int order;
    char *id;
    char *name;
};
int main() {
    struct student Mryan2005 = (struct student){ 1, "007", "Mryan2005"};
    struct student Mryan0415 = Mryan2005;
    Mryan0415.name = "Mryan2005"; 
}

结果竟然是这样
image

结构成员

我们可以用.访问其成员,例如:Mryan2005.id
我们就可以访问到Mryan2005中的id

结构指针

结构的名字不是变量的地址,必须要用&
struct date *Mystudent = &Mryan2005;

标签:struct,char,Mryan2005,student,结构,id,name
From: https://www.cnblogs.com/Mryan2005/p/17873377.html

相关文章

  • 【C语言】自定义类型:结构体
    1、结构体类型的声明1.1、结构体的概念结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。1.2、结构的声明structtag{member-list;}variable-list;在一般情况下,tag、member-list、variable-list这3部分至少要出现2个。以下为实例://此声明......
  • 1-1 结构化数据建模流程范例
    0.环境配置importos#mac系统上pytorch和matplotlib在jupyter中同时跑需要更改环境变量#os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"!pipinstall-Utorchkeras-ihttps://pypi.douban.com/simple!pipinstallpandas-ihttps://pypi.douban.com/simple!pipins......
  • 极语言3-2 类型结构和子类对象
    类型结构和子类对象申请类型(自定义结构体,简称类)时,可在后面加小括号设定初始值,此值在编译程序时预置,无需通过代码赋值。类只能是全局变量。例如:文件框类文件框(长度=76,路长=64,名长=64);//要注意预置初始值时,整数只能用数字,文本只能用字符串。托盘类托盘(长度=488,标识=7,回调=$3......
  • 数据结构 玩转数据结构 14-3 java中的hashCode方法
    0课程地址https://coding.imooc.com/lesson/207.html#mid=15346 1重点关注1.1重写hashCode和equals方法参见3.1  2课程内容2.1不同的对象的默认hashCode方法Integer相同数字的一样Double相同数字的一样String......
  • 一键导出数据库中表结构定义(数据字典)的工具
    导出数据库中标的定义,即所谓的数据字典一、新建maven工程中加入依赖在maven工程的pom.xml中添加依赖<dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.5</version></dependency>......
  • 03.app结构
    1.什么是apk全称:Androidapplicationpackage(Android应用程序包)安装在安卓设备上的软件APK文件基于ZIP文件格式.后缀名被修改为apk2.apk包结构lib/res/assets/classes(n).dexresources.arscAndroidManifest.xml3.app分类NativeApp:原生app手机应用程序Hyb......
  • 【数据结构】第一章——习题演练
    导言本篇章题目出自:王道考研系列丛书——《2024年数据结构考研复习指导》课后习题。题目主要考察的是对时间复杂度的分析,在前面的篇章中我们知道时间复杂度是与问题规模n和输入的值k有关的,但是我们在分析时间复杂度时都是以最坏时间复杂度进行分析,这样能确保算法的运行时间不会比......
  • 51k+ Star!动画图解、一键运行的数据结构与算法教程!
    大家好,我是Java陈序员。我们都知道,《数据结构与算法》——是程序员的必修课。无论是使用什么编程语音,亦或者是前后端开发,都需要修好《数据结构与算法》这门课!在各个互联网大产的面试中,对数据结构和算法的考核乐此不疲。往往《数据结构与算法》学得好的,都能拿到高薪!但是《数......
  • 数据结构与算法之单链表-----黑马程序员(26-35)
    1.链表的概念在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素储存上并不连续。 创建链表如图所示和相关代码publicclassdanlianbiao{privateNodehead=null;//头部第一个结点privatestaticclassNode{//后面的每个结点intvalue;Nodene......
  • js实现树形结构
    letcityList=[ {id:1,parentId:0,name:'江苏省'}, {id:2,parentId:0,name:'广东省'}, {id:3,parentId:0,name:'安徽省'}, {id:4,parentId:1,name:'苏州市'}, {id:5,parentId:1,name:'无锡市'}, {id:6,parentId:......