变量、常量

本文介绍了C语言中的基本概念,包括变量和常量的定义、分类及使用。变量分为局部变量和全局变量,作用域决定了它们在代码中的可见范围。常量则包括字面常量、const修饰的常变量、#define定义的标识符常量和枚举常量。同时,文中通过示例代码解释了变量生命周期和常量不可修改的特性。
摘要由CSDN通过智能技术生成

初识C语言

本篇重点

  • 变量、常量

变量、常量

在生活中,有两种类型的量,一种是可变的叫做变量(体重,时间等等),一种是不可变的叫做常量(性别等等)。

在C语言中也是如此。

定义变量的方法

用数据类型来定义一个变量,就叫做定义变量。给变量赋予一个初始值,叫做变量初始化。

char ch = 'A';
int age = 18;
float Pi = 3.14;
//我们在定义变量的时候,赋予的名字最好是有意义的,这样才能更好的识别区分代码。

变量的分类

  • 局部变量
  • 全局变量
#include<stdio.h>

int a = 10;//这里的a和b都是全局变量
int b = 20;

int main()
{
    int a = 20;//这里的a和c都是局部变量
    int c = 30;
    printf("a=%d",a);//注意这里的局部a和全局a重名了,那么此时遵循局部变量优先的原则
    printf("b=%d",b);
    printf("c=%d",c);
    return 0;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-maHznm4w-1648877019444)(C:\Users\29239\AppData\Roaming\Typora\typora-user-images\image-20220331233846237.png)]

变量的使用

#include <stdio.h>
int main()
{
  int num1 = 0;
  int num2 = 0;
  int sum = 0;
  printf("输入两个操作数:>");
  scanf("%d %d", &num1, &num2);//scanf函数会让我们在键盘输入数据,两个参数就说明输入两个数据
  sum = num1 + num2;
  printf("sum = %d\n", sum);//printf函数会把sum的值以%d的形式打印到屏幕上
  return 0;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QYhov07s-1648877019445)(C:\Users\29239\AppData\Roaming\Typora\typora-user-images\image-20220402121029909.png)]

变量的作用域和生命周期

  • 作用域

    变量在代码中的可执行范围就是作用域

    局部变量:变量所在的局部范围,从进入 { 开始,到 } 结束

    全局变量:作用于整个工程

  • 生命周期

    变量从出生到死亡的整个时间就是生命周期

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

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

常量

C语言中的常量分为以下几种:

  • 字面常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量
#include<stdio.h>
#define MAX 10 //这里的MAX就是一个标识符常量
int main()
{
    1;//字面常量--不可以被改变,1就是1,a就是a,这种量就叫做字面常量
    'a';//字面常量
    return 0;
}
#include<stdio.h>
int main()
{
    int a = 4;;//这里的a是一个变量,
    a = 5;;//这里的a可以被修改,这里我们改为了5;
    const int b = 4;//这里被const修饰过的b就是常变量,
    b = 5;//注意 b = 5 是错误的,不能够对b进行修改。
    return 0;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TDMgfifc-1648877019445)(C:\Users\29239\AppData\Roaming\Typora\typora-user-images\image-20220402103410079.png)]

那这里的b为什么叫常变量呢?

是因为b本身还是变量,但却有了常量的属性,看例子。

#include<stdio.h>
int main()
{
    int arr1[10] = { 0 };//在定义数组时,[]里只能填常量,或者是不填内容

    int a = 10;
    int arr2[a] = { 0 };//这里的[]放入了变量a,编译器会报错

    const int b = 4;
    int arr2[b] = { 0 };//这里的[]放入了常变量b,编译器还是会报错,
                        //因为常变量b仍然是一个变量,但是不可以被修改 
    return 0;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-atyP1W2K-1648877019446)(C:\Users\29239\AppData\Roaming\Typora\typora-user-images\image-20220402103959566.png)]

#include<stdio.h>
#define MAX 10 //这里的MAX就是一个标识符常量 MAX的内容就是10
int main()
{
    int arr[MAX] = {0};//定义数组时,编译器没报错,说明MAX肯定是一个常量
    MAX = 20;//MAX既然是常量,那么就不可以修改,编译器也就会报错
    return 0;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ykAxO3c-1648877019446)(C:\Users\29239\AppData\Roaming\Typora\typora-user-images\image-20220402104423135.png)]

#include<stdio.h>
enum colour//enum是一个关键字,enum colour就是一个枚举类型
{
  	RGB,//这些都是枚举常量
    GREEN,
    BLUE
};
int main()
{
    enum colour a = RGB; //枚举类型定义了一个变量a,并赋值为RGB。
    int arr [GREEN] = {0};//这里不会报错,肯定说明GREEN是一个常量
    BLUE = 10;
    return 0;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oEDC2W5v-1648877019446)(C:\Users\29239\AppData\Roaming\Typora\typora-user-images\image-20220402105145264.png)]

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云朵c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值