【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语言王国的探险更加有趣,充实。

相关文章
|
1月前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
8天前
|
存储 C语言
【C语言基础考研向】02 数据类型-常量-变量
本文介绍了编程中的基本概念,包括数据类型分类、常量与变量的定义及使用。首先概述了四大类数据类型:基本类型(整型、浮点、字符型)、构造类型(数组、结构体)、指针类型和空类型。接着阐述了常量与变量的区别及命名规则,并详细说明了整型、浮点型和字符型数据的特点与应用。最后总结了常见的易错点,如字符串与字符常量的区别及浮点数的默认输出格式。
|
9天前
|
存储 传感器 物联网
结合物联网开发探讨C语言的变量
在物联网(IoT)开发中,C语言的变量起着至关重要的作用。由于物联网设备资源有限,C语言的高效性和对硬件的直接控制使其成为开发嵌入式系统的首选。
|
11天前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
16天前
|
存储 Ubuntu Linux
C语言 多线程编程(1) 初识线程和条件变量
本文档详细介绍了多线程的概念、相关命令及线程的操作方法。首先解释了线程的定义及其与进程的关系,接着对比了线程与进程的区别。随后介绍了如何在 Linux 系统中使用 `pidstat`、`top` 和 `ps` 命令查看线程信息。文档还探讨了多进程和多线程模式各自的优缺点及适用场景,并详细讲解了如何使用 POSIX 线程库创建、退出、等待和取消线程。此外,还介绍了线程分离的概念和方法,并提供了多个示例代码帮助理解。最后,深入探讨了线程间的通讯机制、互斥锁和条件变量的使用,通过具体示例展示了如何实现生产者与消费者的同步模型。
|
1月前
|
存储 编译器 C语言
【C语言篇】C语言数据类型和变量
我们使⽤强制类型转换都是万不得已的时候使用,如果不需要强制类型转化就能实现代码,这样⾃然更好的.
|
1月前
|
C语言
C语言数据类型和变量
C语言数据类型和变量
31 5
|
1月前
|
存储 C语言 容器
C语言中的变量作用域
C语言中的变量作用域
|
2月前
|
存储 编译器 C语言
C语言3 变量
C语言3 变量
19 1
|
2月前
|
C语言
C语言15---在VC中变量的注意点和变量的注意细节
C语言15---在VC中变量的注意点和变量的注意细节