Fork me on GitHub

如何使用结构体

结构体,是构造类型的一种,也就是由基本类型构造的类型。
构造类型:结构体struct、联合体union、枚举类型enum。

1. 定性:

新的“数据类型”。

2. 意义:

有些信息的组成数据并不止一种,
囊括我们想要描述的大多数数据。(复合类型信息)。
数据形成一体。

3. 定义方式:

1. 类型定义(注意最后的分号)

1
2
3
4
5
6
7
8
9
10
11
12
13
struct 结构体类型名
{
类型名 成员名;
};//别忘了分号

//最近学到的
typedef struct 结构体类型名
{
类型名 成员名;
} 你想要的简化名;

typedef 类型名 简化名;
//typedef就是为了给类型起别名用的

内部的单个变量类型叫做成员
主要创建在主函数外部

2. 变量定义

1
2
3
4
5
6
//变量定义方式
struct 结构体类型名 变量名;

//定义并赋初值(初始化)
struct 结构体类型名 变量名 = {常量1, 常量2...};
//常量的顺序对应定义类型的顺序。

4. 数据存储与读取

使用索引对应成员的运算符: ->(指针,左边是地址,右边是成员名) / .(左边,索引成员名)
其他一样

额外提醒: 数组不能用=,结构体可以。–数组是类型不是地址。

参考-典型例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <string.h>
// 结构体。
//构造类型:结构体struct、联合体union、枚举类型enum。
struct student
{
char name[50];
int age;
};typedef struct student stud;
//typedef 给类型起别名。
//typedef 已经存在的名 新类型名;

int main(void)
{
int n, minage;
stud stu1;
scanf("%d", &n);
getchar();
char minname[55] = {0};

for(int i = 0; i < n;i++)
{
scanf("%s %d",stu1.name, &stu1.age);
if(i == 0)
{
strcpy(minname, stu1.name);
minage = stu1.age;
}
else if(stu1.age < minage)
{
minage = stu1.age;
strcpy(minname, stu1.name);
}
}
printf("%s", minname);
return 0;
}

一般在一个东西的多个方面给予数据,用这些数据来排序比大小等等。

字符串函数

下为老师上课时讲过的字符串函数。

>>字符串函数

#include <string.h> 这是一个前提

  1. strlen(),求字符串长度。
    sizeof有区别,它不算'\0'这个字符。

  2. strcpy(s1, s2),将s2拷贝到s1 (%% s1 = s2 %%) 。
    用赋值运算符=不行,编译错误,数组名为地址常量,不能被赋值。
    挨个覆盖直到结束符,然后后面的依然保存,
    但因为结束符的存在而,提早输出。

  3. strcmp(s1, s2) 字符串比较

    逐字符比较,
    s1 < s2就返回-1
    s1 > s2返回1
    相等返回0.

一般用来判断字符串是否相等。

  1. strrev(s1) 字符串反置
    会修改原字符串。
    我们的OJ不支持,PTA支持(有待商榷)。
    自己写。

  2. strcat(s1, s2) 字符串连接,把s2连到s1后。

两个参数总是第一个被修改。

  1. strchr(s1, ch) 查找第一次出现的位置。
    位置是指针。通过寻址符。
    没有的话,返回地址为空NULL。
    减去首元素地址(数组名)就可以得到下标。
    strchr(s1, ch) - s1

  2. strstr(s1, s2) 在一个字符串中找另一个字符串。

在s1中找s2(s2为字符串)
找到返回地址,找不到返回NULL。
则显示字符串第一次出现的第一个字符地址,
减去d,则是它的下标。

C-premier-plus-Chapter-3

第三章 数据处理

你会在这一章学到下面的东西:

  1. 关键字
    `int,short,long,unsigned,char,float,double,_Bool,_Complex
  2. 运算符
    sizeof
  3. 函数
    scanf()
  4. 整型与浮点型的区别
  5. 书写常量与声明这些类型的变量
  6. 如何使用printf()scanf()函数来读写不同类型的值

程序依靠数据来工作。你会向电脑输入数字、字母或者单词,然后期望它能够利用这些数据做些事情。例如,你可能想要电脑去计算支付利润或者展示一个排过序的酒商列表。在这一章,你将会不只阅读数据,而且练习着去操纵数据,那是挺有趣的一件事。

这一章还会让你了解到两大类数据类型:整数与浮点数。C语言提供了这些类型的几种变体。这一章会告诉你类型是什么,如何声明它们并且如何利用它们。而且,你会发现变量与常量之间的区别,作为额外奖励,你的第一个交互式的小程序就要诞生了!

阅读更多...

C premier plus Chapter 2

第二章 C语言介绍

你将会在这一章学到
1.赋值运算符
2.函数main()与printf()
3.一个简单C语言程序的构成
4.创造整型变量,赋值并在屏幕上显示它们的值
5.换行符'\n'
6.如何在程序中添加注释,让你的程序中同时拥有多个函数
并能找出程序中的错误。
7.关键字是什么

C语言的程序是什么样子的?如果你大体浏览过这本书,你会看到很多的例子的。几乎一致的是,你会觉得C语言程序看起来很怪异,有些需要用到类似{,cp->tort,*ptr这样的符号。随着你通读完这本书,你就会慢慢觉得这些符号不是那么陌生了,会变得更加熟悉,甚至有可能会很高兴遇见它们。在这一章中,我们从给出并解释一个简单的实例起步。同时,我们也会强调一些C语言的基本特征。

阅读更多...

C premier plus Chapter 1

第一章 学习准备

你将会在这一章学到:
1. C的历史以及特点
2. 写程序的步骤
3. 关于代码连接器与编译器的一些知识
4. C标准

欢迎来到C语言的世界!C语言是一种充满活力的高级编程语言,它受到业余与商用编程者的喜爱。
这一章会为你学习与利用这种强大而又受欢迎的语言,而且会向你介绍几种你最有可能搭建C语言基础的环境。

首先,我们看向C语言的来源和它的一些特点(优点以及缺点)。接着,我们会了解编程的起源,查看编程的总体规则。
最终,我们会讨论如何在常见的系统中运行C程序。

阅读更多...
  • Copyrights © 2023-2024 大学生暮暖
  • 访问人数: | 浏览次数:

请我喝杯奶茶吧~

支付宝
微信