IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c语言中的局部变量和全局变量 -> 正文阅读

[C++知识库]c语言中的局部变量和全局变量

在函数里边定义的叫局部变量在函数外边定义的叫外部变量也叫全部变量

#include <stdio.h>
int main()
 {
	int i = 520;         //这里i为全局变量
	printf("before i=%d\n", i);  

	for (i = 0; i < 10; i++)
	{
		printf("i=%d\n", i);  //重新定义i的值
	}

	printf("after i=%d", i);   //还是使用全局变量定义的值
	return 0;
}

在c99中,局部变量不影响全局变量,全局变量可以被本程序的其他函数所共用,如果不对全局变量进行初始化,那么他会自动初始化为0

#include<stdio.h>

void a();
void b();
void c();

int count = 0;  //全局变量

void a()
{
	count++; //对全局变量加一
}
void b()
{
	count++;   //再对全局变量加一
}
void c()
{
	count++;   //再加一
}

int main()
{
	a();  //调用全局变量一次
	b();  //加一
	c();  // 加一
	b();  //加一
	printf("%d\n", count);   //%d=4
}

如果在函数内部存在一个与全局变量重名的局部变量,编译器并不会报错,而是在函数中屏蔽全局变量(也就是说在这个函数中,全局变量不起作用)

如下例

#include<stdio.h>

int a, b = 520;

void func()   //定义函数c
{
	int b;
	a = 880;
	b = 120;
	printf("In func,a=%d,b=%d\n", a, b);
}

int main()
{
	printf("In main,a=%d,b=%d\n", a, b);
	func();                             //改动的局部变量,所以这里a=880,b=120
	printf("In main,a=%d,b=%d\n", a, b);  
       //func里面改动的局部变量,不影响全局变量,但由于a没有被初始化,所以被改动,但b仍是520

		return 0;
}

count在函数的定义后在定义 会报错出现count未声明标识符,这个需要需要用到extern关键字
? extern关键字告诉编译器:这个变量我在后边定义了,先别急着报错

#include<stdio.h>

void func();

void func()
{
	extern int count;  //使用了extern关键字,便成功编译
	count++;
}
int count = 20;  

int main()
{
	func();
	printf("%d\n", count);
	return 0;
}

最好不要大量使用全局变量!!但是有时还是很有用的

原因如下:1、使用全局变量会使你的程序占用更多的内存,因为全局变量从被定义的时候开始,直到程序退出时才被释放
? ? ? ? ? ? ? ? ?2、忽然命名空间,虽然局部变量会屏蔽全局变量,但这样一来也会降低程序的可读性,人们往往会很难判断出每个变量的含义和作用范围
? ? ? ? ? ? ? ? ? 3、提高了程序的耦合性,牵一发而动全身,时间久了,代码长了,自己可能不知道全局变量被哪些函数修改过

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 00:58:09  更:2022-02-19 00:59:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:18:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码