查看: 288|回复: 2

[一本通] C/C++中の数据结构体

[复制链接]

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
5868
人气
156
分享
52

最佳新人活跃会员

发表于 2023-1-2 19:07:18 | 显示全部楼层 |阅读模式
【前言】
前言开始:
前言
前言结束(不知道说啥)
【什么是结构体】
所谓结构体,就是将一些数据整合到一起(是C++中类的前身)
结构体中还能嵌套一个结构体(一会儿讲)
【定义结构体】
定义结构体的方法如下:
[C] 纯文本查看 复制代码
struct structureName
{
    {data}
}; //注意!有分号!

例如,给用户做一个结构体
[C] 纯文本查看 复制代码
struct user
{
    char *userName; //用户名
    char *password; //密码
    char *email; //邮箱
};

【定义结构体变量】
定义结构体变量的方法有以下三种:
1.在结构体后定义
[C] 纯文本查看 复制代码
struct user
{
    char *userName; //用户名
    char *password; //密码
    char *email; //邮箱
}USER;

2.在其他地方定义
[C] 纯文本查看 复制代码
struct user
{
    char *userName; //用户名
    char *password; //密码
    char *email; //邮箱
};
struct user USER;

3.定义时省略名称
[C] 纯文本查看 复制代码
struct
{
    char *userName; //用户名
    char *password; //密码
    char *email; //邮箱
}USER;

【结构体の引用方法】
和类一样,名称.数据
比如:
[C] 纯文本查看 复制代码
struct
{
    char *userName; //用户名
    char *password; //密码
    char *email; //邮箱
}USER;

int main()
{
    USER.userName = "蒟蒻";
    USER.userEmail = "11451451890@homo.com";
    USER.userPassword = "11451451890Homo";
}

但是,不能把它作为一个整体,例如:
[C] 纯文本查看 复制代码
printf("%s%s%S\n",USER); //错误!

【结构体の初始化】
和变量一样,结构体也可以初始化:
[C] 纯文本查看 复制代码
struct
{
    char *userName; //用户名
    char *password; //密码
    char *email; //邮箱
}USER = {"蒟蒻","11451451890","11451451890@homo.com"};

【结构体数组】
和结构体一样,只不过结构体变量变成了数组:
[C] 纯文本查看 复制代码
struct
{
    char *userName; //用户名
    char *password; //密码
    char *email; //邮箱
}USER[114514]; //114514也可以不填

【结构体数组の初始化】
初始化方法和结构体变量一样,只不过数据变多了
[C] 纯文本查看 复制代码
struct
{
    char *userName; //用户名
    char *password; //密码
    char *email; //邮箱
}USER[5] = {
    {"蒟蒻","11451451890","11451451890@homo.com"},
    {"homo","11451451890","11451451890@homo.com"},
    {"TEST","11451451890","11451451890@homo.com"},
    {"user","11451451890","11451451890@homo.com"},
    {"恶臭","11451451890","11451451890@homo.com"}};

输出的方法有所不同:
[C] 纯文本查看 复制代码
int main()
{
    for (int i = 0; i < 5;i++)
    {
        printf("name:%s password:%s email:%s\n",USER[i].username,USER[i].password,USER[i].email);
    }   
}

【指针结构体】
定义的方法和结构体相同,定义的方法不同
[C] 纯文本查看 复制代码
struct
{
    char *userName; //用户名
    char *password; //密码
    char *email; //邮箱
}*USER;
//或者。。。
struct user
{
    char *userName; //用户名
    char *password; //密码
    char *email; //邮箱
};
struct user *USER;

引用方法也有点不同:
[C] 纯文本查看 复制代码
(*USER).userName = NULL;

或者:
[C] 纯文本查看 复制代码
USER->userName = NULL;

【结构体嵌套】
举个例子就明白了
[C] 纯文本查看 复制代码
struct A
{
    char a1;
    char b1;
};
struct B 
{
    char c1;
    char d1;
    struct A a;
}b;

引用A的方法如下:
[C] 纯文本查看 复制代码
b.a.a1 = NULL;

简单吧,拜拜

评分

参与人数 2经验 +22 人气 +7 收起 理由
Andy + 11 + 4 赞一个!
YFSafe + 11 + 3 跨版不敢给太多

查看全部评分

本帖被以下淘专辑推荐:

你干嘛~哎哟

2

技术

13

魅力

3

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
4471
人气
169
分享
31

最佳新人活跃会员

发表于 2023-1-3 00:32:11 | 显示全部楼层
前排支持!
指针结构体嘛...确实没用过,平时用的都是普通的结构体
YF工作室驻x64论坛分部
工作室曾开发的软件:YFSafe安全软件,YFChat在线聊天软件,MBRTools等。
欢迎有能力的你加入我们一起共同进步。请发邮件至yfstudio2021@outlook.com

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
5868
人气
156
分享
52

最佳新人活跃会员

 楼主| 发表于 2023-1-3 09:55:49 | 显示全部楼层
YFSafe 发表于 2023-1-3 00:32
前排支持!
指针结构体嘛...确实没用过,平时用的都是普通的结构体

指针结构体我也没用过,好像是用来做链表啥的
你干嘛~哎哟
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表