首页 > 其他分享 >【C语言学习】之变量的作用域和作用类别

【C语言学习】之变量的作用域和作用类别

时间:2024-04-05 21:04:53浏览次数:21  
标签:定义 作用域 C语言 源文件 静态 类别 全局变量 变量

1.局部变量(在函数内部(1.函数体开头定义的变量2.复合语句内定义的变量3.函数的形参)定义的变量,只能在函数内部使用。如果和全局变量同名则优先引用)

2.全局变量(不在任何函数内部定义的变量都是全局变量,作用于定义它的地方开始到源文件的结束)

全局变量的拓展:

1.extern c:可以把全局变量的作用域改为从extern开始到源文件结束

2.如果其他源文件也对c进行了声明,那么也可以在其他的源文件中使用c变量

3.如果只想让c在源文件内部使用,则在定义该变量的时候加上static,比如整型变量时候定义为:static int c,那么该变量只能在本源文件中使用访问了

注意:变量的作用域越小,作用优先级别就越高

3.内存的储存区域

1.代码区(储存代码)

2.静态区(储存静态变量)

1.零区

2.非零区

3.动态区(储存动态变量)

1.堆区(动态内存分配)

2.栈区(动态变量储存)

4.动态变量 

1.动态变量的类别

1.自动变量(局部,用auto声明或省略auto)

2.寄存器变量(局部,用register声明)

2.动态变量的特点

1.每次执行到局部变量作用域就分配一次空间,离开作用域释放空间,如果执行两次就分配两次空间,释放两次空间

2.如果定义变量的时候对他赋初值了,那么每次分配空间的时候都会对变量初始化,分配几次空间,就进行几次初始化

3.如果没有赋初值,那么变量的值不确定

5.静态变量

1,静态变量的种类

1.静态全局变量(用static和extern声明定义)

2.静态局部变量(static声明的局部变量)

2.局部变量的特点

1.在程序运行开始之前分配空间,程序结束时释放空间,运行一次只分配或者释放一次空间(意思就是不会擦除数据,数据会一直保存,可以用来计算阶乘)

2.如果定义变量的时候赋初值,那么对其分配空间的时候就进行了初始化,而且只初始化一次,如果没有赋初值,初值为0

利用静态变量不擦除数据来计算阶乘

标签:定义,作用域,C语言,源文件,静态,类别,全局变量,变量
From: https://blog.csdn.net/m0_69142917/article/details/137378064

相关文章

  • 【C语言系列】-- 数组结构
    数组结构前面介绍的数据类型都是基本数据类型,例如整型、字符型、浮点型等数据,这些都是简单的数据类型。对于有些数据,只有简单的数据类型是不够的,难以反映出数据的特点,也难以有效地进行处理。例如:假设需要接收并存储100个学员的成绩,此时无法使用for循环依次读取每个学员的成绩,因......
  • C语言——调试技巧
    1.Debug和Release的介绍Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。2.调试快捷键最常使用的几个快捷键:F5启动调试,经常用来直......
  • C语言常见概念(一)
    1.C语言发展史,学习C语言的必要性?2.编译和链接是什么?过程是什么?3.各个编译器我该使用什么?vs的优势?4.main函数究竟是啥?5.关键字有哪些?要背诵吗?6.字符?asc码?字符计算?7.C语言的字符串?字符和字符串有何区别?8.sizeof和strlen?竟然有坑?9.转义字符是什么?平时怎么......
  • 从无到有开始创建动态顺序表——C语言实现
    顺序表的概念    顺序表的底层结构是数组,对数组的封装,实现了常用的增删改查等接口。在物理结构和逻辑结构都是连续的,物理结构是指顺序表在计算机内存的存储方式,逻辑结构是我们思考的形式,顺序表和数组是类似的,都是使用了连续的空间进行数据的保存,由于是连续的空间,所......
  • C语言中循环语句while 中判断条件出现 || 和 && 的区别
    当while循环条件中出现||(逻辑或) ||两边的条件有任意一个满足条件时,即为真(也就是非0),循环继续,只有两边都满足条件时,即为假(也就是0),跳出循环  当while循环条件中出现&&(逻辑与)&& 两边都满足条件时,即为真(也就是非0,循环继续只要有任意一边满足条件,即为假(也就是0),跳出循环......
  • c | C语言
    C1.HelloWorld#include<stdio.h>intmain(){printf("HelloWorld");return0;}2.DataTypeInteger:charintshortlong/longlongUnsignedintegers:useunsignedkeywordbeforeIntegerFloatpointnumbers:floatdoubleStructures......
  • C语言数据结构专题--顺序表(1基础)
    前言我们在对C语言有一定的了解之后,我们就可以开始数据结构的学习了,数据结构多用指针、结构体、动态内存开辟等知识,若对这些知识还不太了解的朋友,就需要加深其理解了,那么废话不多说,我们正式开始本节的学习什么是数据结构数据结构是由"数据"和"结构"两个词相组合得到的......
  • 【C语言】函数递归——高手都在用的小技巧
    文章目录1.什么是递归2.递归的主要思想3.递归举例说明3.1n的阶乘3.2顺序打印⼀个整数的每⼀位4.递归与迭代4.1求第n个斐波那契数1.什么是递归递归简单来说就是一个函数自己调用自己,是不是感觉很莫名其妙,我第一次学习的时候就觉得为什么函数会自己调用自己......
  • 杨氏矩阵(C语言)
    文章目录问题技术名词解释思路关键代码运行代码问题有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。要求:时间复杂度小于O(N);技术名词解释杨氏矩阵: 矩阵的每行从左到右是递增的,每列从上到下是递增的......
  • C语言—用EaxyX绘制实时钟表
     代码效果如图#undefUNICODE#undef_UNICODE#include<graphics.h>#include<conio.h>#include<math.h>#definewidth640#definehigh480#definePI3.14159intmain(){ initgraph(width,high); intcenter_x,center_y; center_x=width/2;......