第六周c语言笔记

八、结构体

1.结构体的概念

定义

结构体可以理解为自定义的数据类型,由一批数据组合而成的结构型数据

格式

struct结构定义的大括号后有分号“ ;”

使用

书写位置

函数的里面:局部的位置,只能在本函数中使用

函数的外面:全局的位置,在所有的函数中都可以使用


2.结构体数组

①定义变量并赋值数据

②将变量放到数组中

③遍历数组得到元素

3.起别名

细节

1.起了别名后可以省略正式名

2.使用时不用再写struct

4.结构体作为函数参数

情况

1.传递结构体中的数据值

2.传递结构体的地址值

注意:如果函数中写的是结构体类型的变量,相当于是定义了一个新的变量,要想改变结构体中变              量的值就要利用指针

5.结构体嵌套

细节  

①结构体2需要利用结构体1时,需要把结构体1定义在结构体2上

②利用结构体1时,需要在结构体1内定义变量,写入结构体2的应是结构体1的变量

③嵌套结构体内的变量在赋值和打印时需要缀上结构体1、结构体2的结构名

6.内存对齐

变量位置

①变量只能放在自己类型整数倍的内存地址上

②结构体的总大小,是最大类型的整数倍

③对齐时会补白字节,但不会改变原本字节的大小补位

    eg.   double→8字节

九.共同体/联合体

1.共同体的概念

核心

一种数据可能有多种类型

格式

利用

①对于union中不同类型的变量分别赋值

②每次只能赋一个值

③共同体也可起别名,规则与结构体相同

特点

①所有的变量都使用同一个内存空间

②所占的内存大小=最大单个成员的长度(也受内存对齐的影响,总大小一定时最大单个成员的整      数倍)

③每次只能给一个变量赋值是因为第二次赋值时会覆盖原有的数据

2.结构体与共同体的区别

1.性质

结构体:一种事物中包含多种属性

共同体:一个属性有多种类型

2.存储方式

结构体:各存各的

共同体:存在一起,多次存会覆盖

3.内存占用

结构体:各个变量的总和(受内存对齐的影响

共同体:最大类型(受内存对齐影响)

十.动态内存分布

1.常用函数

头文件为stdlib.h

①malloc函数申请一片连续的空间

      eg. 申请一片空间,储存100个int类型的整数

      返回这片空间的首地址

      int *p=malloc(100,sizeof( int ) ); 

      printf("%d\n",p);

②free函数释放空间

    eg.如果申请的空间不需要再进行使用了,记得一定要释放

    free(p);

③realloc函数扩容

eg.原申请空间不够用,扩容空间

 int*pp= realloc(p, 20* sizeof( int ));

2.动态内存分配的细节

3.c语言的内存结构

• 只有指针加双引号的字符数组才可以放在常量区,不可复用,再次赋值会在常量区创建新常量

• 常量不可修改,但变量的地址可修改

• 只要内存都大,堆可以放下无数数据

十一.文件

程序———→文件:输出流读

文件———→程序:输入流读

1.路径

文件在电脑上的位置

2.表达方式

路径都是以字符串的形式来进行表示的

相对路径以当前项目为参照物

\ :转义字符,改变\后字符的原本含义 

      如果要打印一个路径的话,记得写两个\\

eg.打印一个普通的双引号

     printf(" \"  ") ; 

3.读取数据

把本地文件中的数据读到程序中来

步骤

①打开文件  fopen

②读数据   

 fgetc:一次读一个字符,如果读到了,就返回读取到的字符,读不到返回-1

 fgets :一次读一行,读不到返回NULL

fread:一次读多个

③关闭文件   fclose

文件读写模式

4.写出数据

把程序中的数据写到本地文件中永久保存

步骤

①打开文件  fopen

②写数据

fputc:一次写一个字符,返回写出的字符

fputs:一次写一个字符串,写出成功返回非数,一般忽略返回值

fwrite:一次读多个,返回写出的个数

③关闭文件  fclose

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值