1. string函数族
#include <string.h>
1.1 strlen
功能:字符串中实际字符的个数
参数:字符串的首地址
返回值:字符的个数
1.2 strcpy
功能:对字符串进行复制
参数:1:char * 目标首地址 复制的位置 2:char *源首地址 复制的内容
返回值:目标首地址
1.3 strncp
功能:对字符串前n项进行复制
参数:1:char * 目标首地址 复制的位置 2:char *源首地址 复制的内容 3: int n:个数
返回值:目标首地址
1.4 strcat
功能:对字符串拼接
参数:1:char * 目标首地址 拼接的字符串 2:char *源首地址 拼接的内容
返回值:目标首地址
1.5 strncat
功能:对字符串拼接
参数:1:char * 目标首地址 拼接的字符串 2:char *源首地址 拼接的内容 3:个数
返回值:目标首地址
1.6 strcmp
功能:比较字符串的大小
参数:1:char * 目标首地址 s1 要比较的字符串 2:char *源首地址s2 要比较的字符串
返回值:
s1>s2 : >0
s1=s2 : 0
s1<s2 : <0
比较规则:
从字符串的首个字符开始比较ascii码值,比较相等继续向后,不等输出相减结果
1.7 strncmp
功能:比较字符串的大小
参数:1:char * 目标首地址 s1 要比较的字符串 2:char *源首地址s2 要比较的字符串 3:个数
返回值:
s1>s2 : >0
s1=s2 : 0
s1<s2 : <0
2. 结构体
2.1 定义
定义:用户自定义的数据类型,在结构体中可以包含若干不同数据类型的成员变量(也可以相同),使这些数据项组合起来反映某一个信息。
格式:
struct 结构体名
{
数据类型 成员变量1;
数据类型 成员变量2;
数据类型 成员变量3;
、、、、
};
struct demo
{
char name[32];
int age;
char b;
float c;
};
2.2 结构体变量
2.2.1 定义
概念:通过结构体类型定义的变量
格式:struct 结构体名 变量名;
struct demo ret;
定义结构体的同时定义变量
struct demo
{
char name[32];
int age;
char b;
float c;
}d1;
定义结构体时缺少名称的同时定义变量
struct
{
char name[32];
int age;
char b;
float c;
}d1,d2;
2.2.2 赋值
1. 通过大括号的方式赋值
struct demo ret={"name",18,'a',1.22};
2. 定义之后赋值
struct demo t;
t.b = 'a';
t.age = 10;
3. 点等法
struct demo ret={
.c=1.99,
.b=10
};
2.2.3 访问
通过.(点)访问: 结构体变量名.成员变量名
struct student stu;
scanf("%d %d %f",&stu.id,&stu.age,&stu.score);
printf("%d %d %f",stu.id,stu.age,stu.score);
2.3 重定义
格式:typedef 旧名 新名
typedef int size_t
size_t 的意义和int 是一样的,只不过就是名字不一样而已。
定义:
typedef struct student
{
int id;
int age;
float score;
}STU;
2.4 结构体数组
使用结构体定义的数组
2.4.1 定义
struct student
{
int id;
int age;
float score;
char name[32];
}s1[3];
2.4.2 赋值
struct student
{
int id;
int age;
}s2[3] = {
{10, 11},
{12, 1},
{1, 2}};
2.4.3 遍历结构体数组
typedef struct student STU;
STU s1[3];
for (int i = 0; i < 3; i++)
{
// 输入
scanf("%d%d", &s1[i].id, &s1[i].age);
}
for (int i = 0; i < 3; i++)
{
// 输出
printf("%d %d\n", s1[i].id, s1[i].age);
}
2.5 结构体大小
按照字节对齐原则开辟,64位和8进行比较,用成员变量中最大的数据类型进行比较,<8:按照小的开辟 >8:按照8开辟
//什么意思呢,我们举个例子
struct stu
{
//以最大的数据类型开辟,他们三个int最大为4,所以每次开辟要开辟4个
char a;//4
int b;//4
short c;//4
};// 所以这个结构体的大小是12
struct stu2
{ //这个情况就是,char开辟4个,但是他只占了1个,下面的short还能够存进去,所以他们两个共用一块空间
char a;
short b;//4
int c;//4
};//这个结构体大小就是8
2.6 结构体指针
概念:结构体类型的指针
定义:struct 结构体名 * 指针变量名
struct student *p=&stu;
赋值:
格式:指针变量名->成员变量名
struct student *p=&stu;
p->a=20;
p->id=10;
strcpy(p->name,"1234567");
结构体指针大小:8字节
2.7 总结
1. 不能把结构体类型变量作为整体引用,只能对结构体类型变量中的各个成员变量分别引用。即:stu.id可以输出 直接输出stu不行 stu整体不行必须具体到每一个成员变量
2. 如果成员变量本身属于另一种结构体类型,用若干个成员运算符一级级找到最低级的成员变量
3. 可以把成员变量当成普通变量运算(++ --都可以)
4.结构体变量可以相互赋值
5.结构体定义时尽可能压缩,减少空间浪费
欢迎大家指正!!!