【C语言】变量的前世今生

简介: 了解C语言中的变量的前世今生,可以让你打下坚实的C语言基础,加油吧,为了成为更好的自己。

王国探险记系列

文章目录(2)


前言

一、变量是什么?

        二、变量如何定义?

注意:当你赋值小数的时候,编译器会自然认为你是一个double类型的,所以你在使用float类型的时候要在小数后面加个f,然后小数的类型才是float类型的。

三,变量的命名

变量的命名的基本要求:

变量的命名的实例:

四,变量的创建

五,变量的验证

六,全局变量和局部变量

七,变量的作用域

1,作用域是什么:

2,全局变量和局部变量的作用域

 2.1,局部变量的作用域就是变量所在的局部范围。

下面是三个实例:代码,注释,和结果运行图可以证明

实例1:

实例2:

实例3:

  2.2,全局变量的作用域就是整个工程

3,全局变量还可以怎么使用

八,变量的生命周期

1,生命周期是什么:

生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。

2,局部变量的生命周期

  2.1局部变量进入作用域生命周期开始,出作用域生命周期结束。

3,全局变量的生命周期

       3.1全局变量的生命周期是整个程序的生命周期。

全局变量的生命周期的总结:

总结


前言

C语言王国探险记,是我们学习C语言,从小白成长为大佬的的探险历程,我们在这章将探险变量这个知识关卡



一、变量是什么?

变量是描述变化的量,有一些值总是在发生变化

比如:年龄,体重,薪资等等,

c语言中将那些变的量用变量来表示。

二、变量如何定义?

type  name;            解释:一个数据类型后面跟着一个名称就组成了,变量的基本创建形式

实例如:

int  num;

char c;

image.gif编辑

注意:当你赋值小数的时候,编译器会自然认为你是一个double类型的,所以你在使用float类型的时候要在小数后面加个f,然后小数的类型才是float类型的。

三,变量的命名

变量的命名的基本要求:

image.gif编辑

变量的命名的实例:

int 2*3;因为有*不是数字,字母,和下划线当中的所以不行

int 2b;因为开头不能是数字所以不行

int _2b;可以的因为开头可以是下画线

长度不能超过63个字符

int _2B;可以但是和上面的int _2b代表的是不一样的,所以是区分大小写的

C语言里面不能使用关键字

int char ;是不行的变量的名字不能是关键字

变量的名字尽量有意义一些不要胡起不要让被人看不懂你的变量的名字

四,变量的创建

我们使用代码加注释来解释创建的各个类型的变量

int main()
{
  int zhangsan = 20;//我想创建一个整型变量,
    //名字叫zhangsan这样就可以了,创建的时候我想给他赋一个20,在名字后面加一个=20就可以了
  int num = 0;//创建一个整数变量叫 num它的值是0;这样也可以
  char ch;//创建一个char类型的变量ch
  double d;//创建一个double 类型的变量叫d
  return 0;
}

image.gif

五,变量的验证

我们使用代码加注释来解释创建的各个类型的变量

int main()
{
  //为什么叫变量呢,变量是在说明他的值可变
  int  a = 10;
  printf("a=%d\n", a);//我们来打印验证一下,说明a确实可变
  a = 100;
  printf("a=%d\n", a);//加个a=号表示的是在占位符前面加一个修饰,占位符会被后面的值替换掉
  return 0;
}

image.gif

image.gif编辑

六,全局变量和局部变量

全局变量:在{}外边定义的变量就是全局变量,全局变量是都可以使用的,你想要达到什么样的状态就怎么样去使用就行

局部变量:就是{}内部定义的变量就是局部变量,在局部内可以使用

当一个局部变量和一个全局变量在一个地方都可以使用的时候就是,局部优先

具体实例直接在代码加注释,以及结果运行图了解

//全局变量:在{}外边定义的变量就是全局变量,全局变量的全都可以使用
//局部变量:就是{}内部定义的变量就是局部变量,在局部内可以使用
//当一个局部变量和一个全局变量在一个地方都可以使用的时候就是,局部优先
int a = 100;//当我们把变量放到大括号外面的时候被称为全局变量
int main()
{
  printf("全局变量a-->%d\n", a);
  int a = 10;//在括号里面的时候被称为局部变量
  {
    int b = 1000;
    printf("局部变量b-->%d\n", b);//局部变量b的使用
  }
  printf("局部优先a-->%d\n", a);//虽然有全局变量a=100,但是我们有着局部优先原则,所以a打印为10
}

image.gif

image.gif编辑

七,变量的作用域

1,作用域是什么:

作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。

解释:通俗来说就是这个变量在那里可以使用那里就是它的作用。

2,全局变量和局部变量的作用域

 2.1,局部变量的作用域就是变量所在的局部范围。

理解:我们说的这个局部范围是从它开始定义开始向后的局部范围,局部变量的范围就是它的作用域局部变量就好像你自己家的自行车,只能你们家里的人骑一样

下面是三个实例:代码,注释,和结果运行图可以证明

实例1:

int main()
{
  {
    int a = 10;//10之所以可以正常打印,
                  //就是因为在这个大括号里面创建的变量在这个大括号里面
                 //是可以在大括号里面使用是没有问题的
    printf("%d\n", a);
  }
}
//a变量只能在自己所在的大括号里面使用,大括号就是他的作用域,

image.gif

image.gif编辑

实例2:

int main()
{
  {
    int a = 10;//在大括号里面定义的a只能在在里面看到出了大括号就看不到了
  }
  printf("%d\n", a);//当我们把这个printf()放到外面,就会报错说是未定义的标识符a
}

image.gif

image.gif编辑

实例3:

int main()
{
  int b = 100;//在它所在的范围内,定义的代码往后的都可以使用
  {
    int a = 10;
    printf("%d\n", b);
  }
  printf("%d\n", b);//这个b是定义在大括号内部的,你在任意位置都可以使用
  return 0;
}

image.gif

image.gif编辑

  2.2,全局变量的作用域就是整个工程

理解:全局变量的作用域,是很广范的,就好像放在马路上的共享单车一样,谁都可以使用。

代码,注释,和结果运行图可以帮助理解:

int a = 100;//这是一个全局范围内的变量,在main()函数里可以使用,在自定义的函数里面也可以使用
void test()//我们单独在自定义的一个函数里面打印a,
{
  printf("test()--->%d\n", a);
}
int main()
{
  printf("main()-->%d\n", a);
  test();//调用这个test函数
  return 0;
}

image.gif

image.gif编辑

3,全局变量还可以怎么使用

通过extern 的声明就可以使用其他文件的定义的变量
但是在一个项目的其他文件中不能定义多个a,因为存在多个就会造成重定义
全局变量的作用域是整个工程的,只要是合法的语法情况下都可以使用
更加说明了全局变量的作用域是非常广的

代码,注释,和结果运行图可以帮助理解:

因为我们的代码验证需要两个文件里的代码使用我们将代码分为两段,并配上两段代码的文件截图

// 通过extern 的声明就可以使用其他文件的定义的变量
// 但是在一个项目的其他文件中不能定义多个a,因为存在多个就会造成重定义
//全局变量的作用域是整个工程的,只要是合法的语法情况下都可以使用
//更加说明了全局变量的作用域是非常广的
extern int a;//extern是用来声明外部符号
//声明来自其他文件的一些符号
//声明一下我有一个变量a,它的类型是整型,它来自外部
void test()
{
  printf("test()--->%d\n", a);
}
int main()
{
  printf("%d\n", a);
  test();
  return 0;
}

image.gif

int a = 10;
//我们在add.c里面创建一个全局变量,我们能不能在test.c里面使用呢

image.gif

image.gif编辑

image.gif编辑

八,变量的生命周期

1,生命周期是什么:

生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。

2,局部变量的生命周期

  2.1局部变量进入作用域生命周期开始,出作用域生命周期结束。

代码,注释,和结果运行图可以帮助理解:

int main()
{
  {
    int a = 100;//创建一个a变量等于100,代码从上往下执行执行到a的时候才有必要创建,
    //前面a都不存在所以没有存在的道理,到int a这一行才开始创建,生命才开始
    printf("在生命周期内打印的a-->%d\n", a);//打印我们的a
  }//因为我们是在大括号内部打印,没有出a的生命周期所以可以打印成功
  return 0;
}

image.gif

image.gif编辑

3,全局变量的生命周期

       3.1全局变量的生命周期是整个程序的生命周期。

代码,注释,和报错截图可以帮助理解:

int main()
{
  {
    int a = 100;//这种局部变量是进入它的作用域,创建,生命周期开始,离开作用域生命周期结束
    //出了作用域就不能使用了,所以就结束,因为每一个变量都需要占用内存,当局部变量出了作用域,
    //这个变量就不能用了,还有必要让他进行占用内存吗?/没必要,所以它的生命周期就结束了
  }
  printf("%d\n", a);//当我们运行的时候,就会报错
  //同时我们出了大括号就不能使用a了,
  //因为a这个局部变量不能在被使用,所以a变量就被销毁了
  return 0;
}

image.gif

image.gif编辑

全局变量的生命周期的总结:

全局变量的生命周期和程序的生命周期是一样的
程序从main()函数第一行开始执行,一直到main()函数的结束,就结束而在main()函数的整个生命周期中,全局变量都可以使用,那说明全局变量都存在,所以说main()函数的生命周期就是程序的生命周期,全局变量在这些周期中都可以使用的话,那么全局变量的生命周期其实是和我们程序的生命周期是相同的
.

总结

以上就是今天要讲的内容,本文仅仅简单介绍了变量的基本概念及验证,可以让你在c语言王国的探险更加有趣,充实。

相关文章
|
6天前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
34 12
|
4月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
15天前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
31 5
|
2月前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
49 1
|
2月前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
2月前
|
存储 C语言
C语言:设置地址为 0x67a9 的整型变量的值为 0xaa66
在C语言中,可以通过指针操作来实现对特定地址的访问和赋值。要将地址为 0x67a9 的整型变量值设为 0xaa66,可以先定义一个指向该地址的指针,并通过该指针对该内存位置进行赋值操作。需要注意的是,直接操作内存地址具有一定风险,必须确保地址合法且可写。代码示例应考虑字节序及内存对齐问题。
|
2月前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
|
2月前
|
存储 C语言
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型
|
3月前
|
存储 C语言
【C语言基础考研向】02 数据类型-常量-变量
本文介绍了编程中的基本概念,包括数据类型分类、常量与变量的定义及使用。首先概述了四大类数据类型:基本类型(整型、浮点、字符型)、构造类型(数组、结构体)、指针类型和空类型。接着阐述了常量与变量的区别及命名规则,并详细说明了整型、浮点型和字符型数据的特点与应用。最后总结了常见的易错点,如字符串与字符常量的区别及浮点数的默认输出格式。
|
3月前
|
存储 传感器 物联网
结合物联网开发探讨C语言的变量
在物联网(IoT)开发中,C语言的变量起着至关重要的作用。由于物联网设备资源有限,C语言的高效性和对硬件的直接控制使其成为开发嵌入式系统的首选。