C语言入门篇--局部全局变量的作用域及生命周期

 更新时间:2021年08月26日 14:48:46   作者:yycure  
本篇文章是c语言基础篇,本文对初识c语言的变量、局部全局变量的作用域及生命周期做了简要的概述,希望可以帮助大家快速入门c语言的世界,更好的理解c语言

1.变量的分类

1.1 局部变量

也称临时变量,在函数、代码块内定义,一般只可在代码块内部使用的变量。

1.2 全局变量

具有全局性,放在函数外,在同一___.c文件中可在其定义之后的任何地方使用。

(1)main函数也是函数。

(2)若想在全局变量定义之前使用全局变量,可以对其做前向声明后使用。

(3)全局变量是支持跨文件访问的。

1.3 知识点

1.3.1 就近原则

局部变量和全局变量同名采取–>就近原则。

若全局变量和局部变量同名时,优先使用离使用地方近的变量。(不推荐使用同名的变量)

#include <stdio.h>
int global = 2020;//全局变量
int main()
{
	int local = 2021;//局部变量
	int global = 2022;//局部变量
	printf("global = %d\n", global);
	return 0;
}

在这里插入图片描述

1.3.2 访问规则

全局变量在任何函数内都可被直接访问,而局部变量只可在本函数内被访问。

#include <stdio.h>
double weight = 45.5;//全局变量
void fun()
{
	printf("%f\n", weight);
	printf("%f\n", high);//error!
}
int main()
{
	double high = 180.5;//局部变量
	printf("%f\n", weight);
	printf("%f\n", high);
    fun();
	return 0;
}

在这里插入图片描述

1.3.3 有效范围

C语言中变量只在定义变量及以后的区域中有效(与宏类似)。

#include <stdio.h>

int main()
{
	printf("%f\n", weight);//error!
}	
	return 0;
}
double weight = 45.5;

在这里插入图片描述

2.变量的使用

(1)变量先定义后使用。

(2)注意输入输出格式控制,scanf切记加&。

#include <stdio.h>

int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	printf("输入两个操作数:>");
	scanf("%d %d", &num1, &num2);
	sum = num1 + num2;
	printf("sum = %d\n", sum);

	return 0;
}

在这里插入图片描述

3.变量的作用域和生命周期

3.1 作用域

指变量可有效作用的范围。

3.1.1 局部变量的作用域

是变量所在的局部范围。

3.1.2 全局变量的作用域

是整个工程。

3.2 生命周期

指变量的创建到变量的销毁之间的时间段(即变量的存在时间)。

3.2.1 局部变量的生命周期

是进入作用域 生命周期开始,出作用域 生命周期结束。

当函数调用完后此变量也就释放掉了。
(随函数的调用而形成,随函数的释放而释放。)

3.2.2 全局变量的生命周期

是整个程序的生命周期。

程序跑起来后到程序退出一直存在。
(随程序的存在而存在,随程序的结束而释放。)

以上就是C语言入门篇--局部全局变量的作用域及生命周期的详细内容,更多关于C语言的资料请关注脚本之家其它相关文章!

相关文章

  • C语言实现删除某一个数组值的方法

    C语言实现删除某一个数组值的方法

    这篇文章主要给大家分享C语言数组中删除数组中某个值的方法,既然要学习删除数组中的元素,我们就必须得先知道数组中有哪些元素。同时还要定义一个变量,并将需要删除的元素赋值给那个变量。下面来看看文章的详细内容吧
    2021-11-11
  • 简要介绍C++编程中的友元函数和友元类

    简要介绍C++编程中的友元函数和友元类

    这篇文章主要介绍了C++编程中的友元函数和友元类,属于较为冷僻的知识,在实际开发中较少使用,需要的朋友可以参考下
    2015-09-09
  • c++多线程之死锁的发生的情况解析(包含两个归纳,6个示例)

    c++多线程之死锁的发生的情况解析(包含两个归纳,6个示例)

    这篇文章主要介绍了c++多线程之死锁的发生的情况解析(包含两个归纳,6个示例),需要的朋友可以参考下
    2018-01-01
  • C++多线程之互斥锁与死锁

    C++多线程之互斥锁与死锁

    互斥锁和死锁是C++多线程中常见的情况,这篇文章就带大家进一步了解多线程中的互斥锁与死锁这两个概念,文中的示例代码介绍得很详细,快来跟随小编一起学习吧
    2021-12-12
  • C语言中数据在内存如何存储

    C语言中数据在内存如何存储

    本文详细讲解了C语言中数据在内存如何存储,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • C语言实现电影院选座管理系统

    C语言实现电影院选座管理系统

    这篇文章主要为大家详细介绍了C语言实现电影院选座管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 怎么实现类的成员函数作为回调函数

    怎么实现类的成员函数作为回调函数

    不使用成员函数,为了访问类的成员变量,可以使用友元操作符(friend),在C++中将该函数说明为类的友元即可
    2013-10-10
  • qt5之QFile读写文件功能详解

    qt5之QFile读写文件功能详解

    这篇文章主要为大家详细介绍了qt5之QFile读写文件功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Matlab实现将图像序列合并为视频的方法详解

    Matlab实现将图像序列合并为视频的方法详解

    MATLAB是一种高性能语言,用于操纵矩阵、执行技术计算、绘图等。它代表矩阵实验室。借助这个软件,我们可以从图像中创建视频。这篇文章主要介绍了Matlab实现将图像序列合并为视频的四个方法,希望对大家有所帮助
    2023-03-03
  • 深入探究C/C++中互斥量(锁)的实现原理

    深入探究C/C++中互斥量(锁)的实现原理

    ​ 互斥量是一种同步原语,用于保护多个线程同时访问共享数据,互斥量提供独占的、非递归的所有权语义,本文将和大家一起深入探究C/C++中互斥量(锁)的实现原理,感兴趣的小伙伴跟着小编一起来看看吧
    2024-06-06

最新评论