【C语言攻略】—从零开始的C语言生活---初阶篇(2)之常量与变量

本文介绍了C语言中的变量与常量的概念及其区别。变量是可以改变的量,如年龄、身高,而常量在初始化后不能更改。C语言中的常量包括字面常量、const修饰的常变量、#define定义的常量和枚举常量。const修饰的变量在某些情况下仍可作为非常量使用,如作为数组大小。#define定义的常量是真正的常数,可用于初始化数组。枚举常量用于列举一系列相关常量,如性别或一周天数,它们默认从0开始计数,可自定义初始值。

目录

前言

变量与常量

      什么是变量?

     什么是常量?

字面常量

 const修饰的常变量

define定义的常量

枚举常量

结语


前言

各位大佬好呀,日更博主又来了,今天来讲讲常量与变量的关系和定义方式。

变量与常量

      什么是变量?

        顾名思义,可以改变的量就是变量,生活中例如年龄、身高和体重等等都是可变的量。C语言的变量则是在被初始化后依旧可以更改的值,我们称为变量。码来:

#include<stdio.h>
int main()
{
    //创建变量并初始化
    int num = 10;
    printf("%d\n",num);//打印10
    num = 20;//修改变量值
    printf("%d\n",num);//打印20
    return 0;
}

当变量num被创建并初始化后,再对num进行赋值操作,改变num的值,则num称为变量。

     什么是常量?

      常量与变量性质相反,变量是被初始化后依旧能够改变,而常量在被初始化后就无法再对他进行赋值修改操作。生活中也有许多的常量:比如圆周率(π)、人的性别还有一周有几天等。

      C语言常量的定义方式有四种:字面常量const修饰的常变量define创建的常量和枚举常量

字面常量

字面常量就是直接定义的常量,还可以给函数直接传入自己想传入的值,或者给数组大小进行初始化都可以用字面常量

#include<stdio.h>
int main()
{
    //字面常量
    100;
    3.14f;
    'c';
    arr[10];
    //直接传一个10让printf函数打印出来
    printf("%d\n",10);
    return 0;
}

 const修饰的常变量

        是不是觉得特别别扭?为什么叫常变量?到底是常量还是变量呢?别着急,我来一一解释。const关键字是用来修饰变量的,使变量拥有和常量一样不可更改的特性。

       可见,当我们想要对num值进行修改时,编译器报了个错误,说表达式必须是可修改的左值。说明num被const修饰以后具有了不可改性。但是为什么说他的本质还是变量呢?变(常量)了但是没有完全变。其实想要验证也很简单。

 

       当我们用呗const修饰过的num给数组大小进行初始化时,编译器又给我们报了个错误,说表达式必须含有常量,说明num就算被const修饰过后依然不是一个常量。只是拥有了常量不可被更改的特性。const关键字一般是用来保护函数所传参数的,保护参数不会被修改,这里还是以后再讲。说白了就是一个变量你不想被别人修改时,你就加一个const。

请注意:我所使用的编译器是【Visual Studio 2019】,在VS编译器中,是不支持这样去赋值的。但在C99标准中,支持这种变长数组,允许使用变量来指定数组大小。

define定义的常量

      由define定义的参数,是正儿八经的常数,我们一般将define定义的在全局区,当然你定义在函数体内也是可以的,define定义的命名方式我们一般都会使用大写(小写也没问题,但是一般都是大写),这难道就是程序员之前的默契吗?

上代码:

#include<stdio.h>
#define MAX 100

int main()
{
    //用来等于数组大小也是谋问tei(第二声)啊
    int arr[MAX];
    //打印100
    printf("%d\n",MAX);
    return 0;
}

枚举常量

      最后就是枚举常量,这里还是先简单提一嘴。枚举常量就是将能一一列举出的常量给一一列举出来,比如一个人的年龄:男、女、保密,亦或是一周有多少天,从周一到周日。这些都是可以一一列举的事物,就是枚举。

#include<stdio.h>
enum Sex
{
	MALE,
	FAMALE,
	SECRECY
};

int main()
{
    printf("%d\n",MALE);//0
    printf("%d\n",FAMALE);//1
    printf("%d\n",SECRECY);//2
    return 0;
}

        枚举类型的默认值是从0开始之后创建多少个成员,成员默认值依次向后增加,也可以自己进行初始化。要注意的是,当你前一个成员赋了初值,而后面的成员没有被初始化。后面的成员就会跟着前一个被赋值的成员所赋的值为起点继续向后增加。是不是感觉说的有点乱?

 还是这段代码:

#include<stdio.h>
enum Sex
{
	MALE,
    //赋初值
	FAMALE = 10,
	SECRECY
};

int main()
{
    printf("%d\n",MALE);//0
    printf("%d\n",FAMALE);//10
    printf("%d\n",SECRECY);//11
    return 0;
}

FAMALE被初始化为10后,后面的SECRECY的默认值跟着前一个成员改变了,以FAMALE所赋的数值开始继续向后默认加一。

结语

来分享一下自己的学习笔记,日更虽好,可不要耽误刷题敲代码哦。

 

Toonflow 是一款 AI 短剧漫剧工具,能够利用 AI 技术将小说自动转化为剧本,并结合 AI 生成的图片视频,实现高效的短剧创作。借助 Toonflow,可以轻松完成从文字到影像的全流程,让短剧制作变得更加智能便捷。Toonflow一个【自动化的导演助理】 —— 也是一套能跑通“文本→分镜→出片”的开源 AI 短剧生成工具。你只负责给它【小说/剧本】,它负责帮你把【拆分镜、画人设、生成视频】这些重复劳动全部做掉。它不是简单的“文生视频”,而是一套能保证“主角不精分”的工业化管线。核心功能拆解(实测版)功能 A:【角色卡生成 (Character Sheet)】解决什么:AI 画图最怕“千人千面”,同一个主角在不同镜头里长得不一样。怎么用:导入文本后,AI 自动提取主角特征(发型/服装/脸型),生成一张固定的人设卡。注意什么:如果 AI 提取的特征不准,一定要手动微调一下关键词再生成。功能 B:【智能分镜 (Storyboard)】解决什么:把文字描述变成具体的画面构图。怎么用:系统自动把剧本拆成一个个 Shot(镜头),并调用 SDXL 生成对应的分镜图。注意什么:生成的图可能有时候手指会崩,可以用内置的 Inpaint (重绘) 功能修一下。功能 C:【视频转化 (Motion Generation)】解决什么:让静态的分镜图动起来。怎么用:对接 SVD (Stable Video Diffusion) 或 Runway 接口,一键转视频。注意什么:目前生成的视频幅度较小,更像是“动态 PPT”,适合做叙事类视频,不适合做动作片。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值