200804C阶段一变量生存期和结构体

这篇博客主要讲述了C语言中函数的数据传递方式、变量生存期和内存存储区域,以及结构体的声明、初始化和赋值。通过学习,博主理解了函数间的值传递和地址传递,了解了全局变量和静态变量的区别,并掌握了结构体在内存中的存储规则。同时,博主强调了预习的重要性,以更好地掌握新的知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、学习的知识点

作业

  1. 数组作为函数参数,他的书写格式有三种:char pstr[20]、char pstr[]、char *pstr
  2. 形参名可以省略:int fun(int,int)

1、函数

函数间的数据传递

  1. 参数传递:值传递、地址传递
  2. 返回值
  3. 全局变量:函数外定义,在整个工程中都可以使用,在不同的文件使用时,需要加extern

变量的生存期

静态存储方式:由系统分配固定的存储空间,全局变量就存在静态存储区
动态存储方式:存放以下数据:

  1. 函数的形参
  2. 自动变量(未加static声明)
  3. 函数调用时的现场保护和返回地址

内存中的存储区域包括

  1. 程序代码区:存放函数体的二进制代码
  2. 静态区/全局区:全局变量和静态变量的存储区域
  3. 堆区(heap):程序员分配释放
  4. 栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值

存储类别

存储类别是数据在内存中的存储形式,是变量的属性
使用语法:

存储类别数据类型变量名称//
autointa;自动变量
staticintb;//静态
registerintI;//寄存器变量
externintA;//引入外部变量

在静态存储区分配存储单元,在编译时赋初值,而且只赋初值一次。如果没有赋初值,系统就会自动赋0或空字符。若函数中存在静态变量,调用函数时,该变量只会被初始化一次,再次调用时不会初始化。

2、结构体

结构体是一个数据类型,可以将不同类型的数据组合成一个整体。如:学生有学号、姓名、性别、年龄等

结构体声明

声明时,系统不会开空间,只有在定义变量时,才会开空间。结构体内的存储单元以结构体内占用空间最大的数据类型对齐、顺序对齐。结构体的类型不可以重复

struct student_1 //struct student_1是一个数据类型,相当于int、float
{
char name[20];
int age;
}staff;//变量名为staff

//typedef作用是重命名,struct student_1 重命名为 STAFF_T
typedef struct student_1 STAFF_T;

结构体初始化

与变量和数组一样,结构体变量也可以在声明时初始化
      struct employee 
      { 
          int no;
	      char name [20];
      }stu={123,”abc”};
      struct employee 
      {	
	      int no;
	      char name [20];
      }stu={123}; 

结构体赋值

按声明的顺序赋值,可以部分元素初始化,剩余的元素为0。

STAFF_T staff={1001,“admin”}; //定义一个名为staff的结构体类型
//结构体数据成员(属性)的访问:变量名+点运算符+数据成员名
staff.name

//结构体中字符串元素的修改
strcpy(staff1.name,"sxr")

char *memcpy(char *dest,const char *source,int size); //内存拷贝,成功时返回dest,否则返回NULL

二、上课没有听懂或者没有理解的地方

三、当天学习的收获

学习了结构体这个新知识

四、作业的思路、不会的地方

还没看

五、其他需要反馈的问题

六、心得体会

一阶段开始学习的都是新知识了,课前要做好预习才能跟上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值