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语言入门--局部变量--第一章8 -> 正文阅读

[数据结构与算法]C语言入门--局部变量--第一章8

C 语言中,变量定义的位置可以分为 3 种:

  1. 在函数内定义。
  2. 在函数内的语句块中定义。
  3. 在函数外部定义。
    在函数内部定义的变量被称为局部变量,在函数外部定义的变量被称为全局变量。前几
    章编写的 C 程序中只包含一个 main 函数,并且变量也都定义在 main 函数中,因此前几章
    中定义的变量都是局部变量。
  1. 局部变量的作用域
    变量的作用域指的是变量的有效作用范围,而局部变量的作用域仅限于函数内部以及语
    句块中。
    局部变量的作用域需要分 2 种情况来讨论:
    (1)在函数内部定义的变量只在本函数范围内有效,也就是说只有本函数内才能引用,
    本函数之外都不能引用这些变量。
    (2)在函数内部语句块中定义的变量,只在本语句块范围内有效,也就是说只有在该语
    句块内才能引用,该语句块之外都不能引用这些变量。
    【出错的代码】
#include<stdio.h>
int main()
{
{
//语句块开始
int a=200;
}
//语句块结束
printf("a=%d\n",a); //出错代码
getchar();
return 0;
}

在 C 语言中,局部变量的作用域以花括号进行区分

#include<stdio.h>
int main()
{
int a=100;
{
int b=200;
printf("a=%d\n",a);
printf("b=%d\n",b);
}
printf("a=%d\n",a);
getchar();
return 0;
}

语句块中可以定义变量,也必须定义在其他语句之前

#include<stdio.h>
int main()
{
int a=100;
printf("hello");
{
int b=200;
printf("a=%d,b=%d\n",a,b);
}
printf("a=%d\n",a);
getchar();
return 0;
}
  1. 局部变量使用前,必须初始化
    在 C 语言中,第一次对变量进行的赋值操作被称为初始化。变量的初始化分为两种情况:
    第一种 定义变量并且初始化,例如:
    int a = 10;
    //定义并且初始化
    第二种 先定义,后初始化,例如:
    int a;
    a=10;
    变量初始化本质上就是赋值,不过只有第一次给变量赋值才能被称为初始化。而变量赋
    值就没有次数限制了,第几次都可以。
    在 C 语言中,如果定义了局部变量,但是并未进行初始化,编译器并不会自动初始化局
    部变量,该局部变量的值将是未知的。因此,在程序中使用这样的变量是存在风险的。为了
    防止这种情况发生,在 VS2012 中,如果程序中使用了没有初始化的局部变量,调试程序的
    时候将报错(如果在运行模式下会输出不确定的值),下面通过例子来了解一下。
    【出错代码】
#include<stdio.h>
int main()
{
int a;
printf("a=%d\n",a); //出错代码,使用了未初始化的局部变量
getchar();
return 0;
}

运行结果如图所示
在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 12:14:11  更:2021-10-17 12:15:12 
 
开发: 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/26 7:19:56-

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