2022-2023-1 20221307《计算机基础和程序设计》第十四周学习总结

这个作业属于那个班级 https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
作业要求 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14
作业目标 学习《C语言程序设计》第12章

链接:2022-2023-1 20221307《计算机基础和程序设计》第十四周学习总结 - 20221307 - 博客园 (cnblogs.com)


教材内容总结

:1.学习了结构体

    2.学习了文件操作

 一、结构体

结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员的数据所组成,其中每个成员可以是不同类型的。结构体通常用来表示类型不同但是又相关的若干数据。(注意:数组与结构体一样,也是一种值的集合,只不过数组的每个元素都要是相同类型的,而结构体的每个成员可以是不同类型的

如何定义一个结构体:

#include<stdio.h>
struct STU {

};

  注意:
 1.若结构体声明是在mian函数之外的,那么列表后创建的结构体变量是一个全局变量。
 2.结构体成员变量也可以是另一个结构体类型,这种用法被称为:嵌套结构体。
 3.在结构体声明结束的时候,千万不要忘记{}后面是有一个的。

嵌套结构体:

#include<stdio.h>
struct DATE{
   int year;
   int date;
   int month;
};
struct GRADES{
   int math;
   int English;
};
typedef struct STUDENT{
    char name;
    struct DATE;
    int num;
    struct GRADES;
}stu;

结构体自引用,链表:

数据在内存中有连续和非连续的储存方式例如我们熟知的字符串,数组

#include<stdio.h>
#define N 100
main(void)
{
   char str[N];//both succession
   int arr[N];
}

而链表在数据结构中储存的方式并不是连续的

创建一个结构体,成员包含指向自身的指针

#include<stdio.h>
struct STU{
    int data;
     struct STU* next;
};

结构体内存对齐

下面代码打印出所占字节数,经过计算应该是6字节,但事实真的是这样吗?

#include<stdio.h>
struct s1{
    int a;
    char b;
    char c;
};
struct s2{
    int a;
    char b;
    char c;
};
main()
{
   printf("%d",sizeof(struct s1));
   printf("%d",sizeof(struct s2));
}

运行结果

 

 第一个成员变量的地址与结构体起始位置的地址是相同的

其他成员变量要对齐到<对齐数>的整数倍处

结构体的总大小为最大对齐数(每个成员的都有一个对齐数)的整数倍

如果是嵌套结构体的情况,嵌套结构体的对齐数就是其自身的最大对齐数。(同理数组的对齐数就是其元素的对齐数)

结构体传参:

看下面这段代码

 1 #include<stdio.h>
 2 #define N 100
 3 struct stu{
 4     int year;
 5     int data[N];
 6 };
 7 void print1(struct stu s)
 8 {
 9   printf("%d\n",stu.year);
10 }
11 void print2(struct stu* ps)
12 {
13   printf("%d\n",stu->year);
14 }
15 main(void)
16 {
17   struct stu s={{1,2,3,4,5},100};
18   print1(s);
19   print2(&s);
20 }

13 行引用地址利用“->”运算符

二、文件操作

 

 fopen 函数原型

应包含(“文件名”,“所包含操作”)

下面代码

#include<stdio.h>
int main(void)
{
 FILE *fp=fopen("test.txt","r");//read
 if(fp=NULL)
{
  perror("fopen");//print the error informain
  return -1;//code error to exit
}
 fclose(fp);//close file
  return 0;
}

  

还有很多操作函数不一一列出;

 

posted on 2022-12-03 17:00  20221307  阅读(26)  评论(0编辑  收藏  举报

导航