请添加图片描述
数组存储方式:连续存储
当数组初始化时,如果小于元素个数,后面的挨个赋值0

数组的长度计算
eg:int numbers[]={,,,*};
—>sizeof(numbers)/sizeof(int)
数组整体除以数组类型

取地址:
int num[5]
方法1:*num[0];
方法2:int *p=num; p就是第一个元素的地址(指针类型要与数组类型一致)

当数组中存储字符时,有两种,一种是一个个字符赋值,另一种是字符串赋值
char ch1[5]={‘H’,‘e’,‘l’,‘l’,‘o’};其中有5个字符元素
char ch1[]=“Hello”;其中有六个字符元素,自动添加一个’\0’结束符

不能直接给数组赋值(不加[]符号),因为数组名本身是一个地址
strcpy:
char str[20];
strcpy(str,“Hello word!”);
printf(“%s”,str);
或者
char str[20];
char *p=“Hello word!”
strcpy(str,*p);
printf(“%s”,str);

sprintf:
char str[20];
int i=10;
char *p=“Hello word!”
sprintf(str,“i=%d”,i);
printf(“%s”,str);

memcpy:
char str[20];
int i=‘a’;
memcpy(str,&i,i); //某个地址后多少个字节内的东西复制给前面
printf(“%c”,str[0]);
或者
char str[20];
memcpy(str,“Hello”,6); //某个地址后多少个字节内的东西复制给前面
printf(“%c”,str);

字符串数组比较
strcat(str1,str2)------从左到右比较ASCII,前面大于后面返回正数

一维数组中,*p=a就可以取a[0]的地址
二维数组中,*p=a[0];*p=(int *)a;*p=&a[0][0];

请添加图片描述
事先声明头文件:include<string.h>

结构体的定义:
struct 结构体名
{
数据类型 成员名1;
数据类型 成员名2;
};

录入信息:
eg:
struct Person
{
char name;
int agel;
float height;
};
int main()
{
struct Person person1;

strcpy(person1.name,"YuJiaHao");
person1.age=22;
person1.height=1.95;

}

结构体数组
struct Person people[3];
调用时:
people[i].name

结构体指针
使用指针指向结构体变量:struct Person *ptr=&person1
访问结构体成员:'->'符号进行访问:printf(“Name:%s”,ptr->name);OR printf(“Name:%s”,(ptr+i)->name);

结构体可以进行嵌套

结构体定义的第二种方式:
typedef struct{
int a;
char b[50];
}Jiegouti-name;

Jiegouti-name jiegouti1

结构体指针----------------------没懂
请添加图片描述
请添加图片描述联合体语法:
union union-name{
data-type1-member1;
data-type2-member2;
}
共用一段相同的内存空间
eg:
union Data{
int i;
float f;
char str[20];
}
总共占用20个字节空间(联合体大小取决于最大成员大小)

作用:节省内存
在同一时刻只需要其中一种类型数据的值(传感器)

位域

构建位域
eg:
struct Status{
unsigned int flag1:1; //占1个位放在int的四个整形空间里
unsigned int flag2:1; //占1个位
unsigned int mode:2; //占2个位
//都是同一个int空间里,分成四份,按位域划分来分配空间
char data:4; //占4个位 并且由于类型不同,重新开辟了一个类型空间
};

位于不能被取地址;
位域只适用于整形(int / unsigned int);
位域分配地址受变量类型限制,不能超过
请添加图片描述
enum
eg:
enum Weekday{
Sunday, //默认是0
Monday, //默认是1
Tuesday, //2
****
}
int main()
{
enum Weekday today; (也可以不用枚举变量,直接定义int today)
todaty=Monday;
*****
}

里面的书局一般默认为int型

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐