结构体
int float 只能存单个数据
int num【】只能存同种类型的多个数据
为什么使用结构体:
需要一种类型,可以保存多种数据
结构体是什么:
是一种类型
如何定义结构体类型
struct student{
int age;
char name【10】
}
注意:定义结构体类型时不能赋初值
类的成员变量也不能赋初值
对象可以存值
如何使用结构体
int a = 10;
struct student xw;
struct student lw = {40,‘m’,“隔壁老王”};
lw.age = 35 更改年龄 变量用 . 访问 指针用->访问
注:对齐方式 小类型向大类型对齐
变量类型
1.普通变量
2.常量
3.静态变量
当程序结束了这些变量就没了
自动申请的内存
当重启电脑后也就没了
密码一直存在 程序结束还是电脑重启
永久保存数据、
内存 运行分配
硬盘 永久保存 通过文件的形式
常量字符串内存空间由系统自动分配
在常量区分配 当程序结束才会被释放
关于常量区,静态区,站,堆
常量区 >常量 const int a = 1;
静态区 static 静态变量只会被定义一次 从开始到结束
站 局部变量 int a = 10 离开作用域就收回
堆 自己申请的内存空间 malloc calloc realloc 必须自己释放
char* test(){
char *name = "jack";
return name;
}
char *test1(){
char name[10] = {'j','a','c','k'};
return name;
}
int main(){
char *p ;
p = test1();
printf("-%s\n", p);
return 0;
}
动态分配内存
为什么需要动态分配内存
1.存储的数据需要延长生命周期
2.一个指针变量需要存储数据 指针变量本身只能存地址不能存数据需要分配内存空间来存数据
如果使用指针变量接收数据 必须先为这个指针分配一片内存空间
有内存空间才能存数据
怎么分配?
使用 malloc 申请内存空间
导入头文件#include<stdlib.h>
name = (char)malloc(10sizeof(char));
申请内存不一定会成功
使用完毕必须自己手动释放内存
free(name);
只有malloc可以用free释放
使用realloc 改变malloc所分配的内存空间的大小 (char)realloc(name,20sizeof(char))
退出之前必须将之前分配的内存空间释放掉
创建文件
1.FILE*类型
2.打开文件
3.写入内容
#include <stdio.h>
int main(){
//创建数据
FILE *fp =
fopen
("C:/Users/ASUS/Desktop/test.txt","a+");
//写入内容
/*fputc('a',fp);
fgetc(fp);*/
//fputs("hello word",fp);//写入字符串
//fgets(fp);//读取字符串
//int num[5] = {1,2,3,4,5};
//fwrite(num,sizeof(num),1,fp);//写入的是二进制 图片 视频 音频 结构体
int num2[5] ={};
fread(num2,sizeof(num2),1,fp);
//fclose(fp)//关闭
return 0;
}