• C语言中的常量、变量及关键字


    一、常量

    1. 常量或常数,表示固定不变的数据,是具体的数据
    2. 常量是固定值,在程序执行期间不会改变
    3. 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量
    1. 字符常量,如'7','a','A',不能是中文,例如'男',因为一个汉字和全角的符号占两个字节(GBK编码)
    2. 整型常量,如7,18,-2。
    3. 浮点型常量,如3.14,-2.3,5.67
    4. 字符串常量,如"123","男","www.baidu.com","马超","xiaoqiu"

     二、变量

    1. 变量使用前必须先进行声明(或定义),向操作系统申请一块内存空间,用于存放数据
    2. 变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C 是大小写敏感的 
    3. 变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上

    1.变量的基本类型 

    类型描述
    char通常是一个字节(八位), 这是一个整数类型。
    int整型,4 个字节,取值范围 -2147483648 到 2147483647。
    float

    单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。

    double

    双精度浮点值。双精度是1位符号,11位指数,52位小数。

    void表示类型的缺失。

     2.变量的定义以及初始化

    int    i;  // 定义整数型变量,用于存放整数
    char   c;  // 定义字符型变量,用于存放字符
    float  f;  // 定义浮点型变量,用于存放浮点数
    double d;  // 定义浮点型变量,用于存放浮点数
    
    int   i=0;   // 定义整数型变量并初始化
    char  c=0;  // 定义字符型变量并初始化
    double d=0;   // 定义浮点型变量并初始化

     3.变量的赋值

    常量的值赋给变量:

      i = 10;  // 整数型变量赋值10
      c = 'A';   // 字符型变量赋值'A'
      d = 1500.87;   // 浮点型变量赋值1500.87
      strcpy(name,"xiaoqiu");   // 对字符串变量赋值"xiaoqiu"

    变量的值赋给变量:

      int i1=i;   // 定义变量i1并把i的值赋给它
      char c1=c;  // 定义变量c1并把c的值赋给它
      double d1=d;  // 定义变量money1并把money的值赋给它
      char name1[21];  // 定义字符串变量name1
      strcpy(name1,name);   // 把name的值赋给name1 字符串变量的赋值与其它类型不同,不能用=号,要用strcpy函数

    4.字符串变量以及初始化 

    在C语言中,没有“字符串”这个数据类型,而是用字符数组来存放字符串

     char name[21];   // 定义一个可以存放20字符的字符串

    温馨小提示:

    1. 如果要定义一个存放20个英文的字符串,数组的长度应该是20+1,原因就是每个字符串后面都有一个 '\0'
    2. 中文的汉字和标点符号需要两个字符宽度来存放(GBK编码)
    3. 例如: name[21]可以存放20个英文字符,或10个中文字符
    4. 字符串不是C语言的基本数据类型,不能用“=”赋值,不能用“>”和“<”比较大小,不能用“+”拼接,不能用==和!=判断两个字符串是否相同,要用函数

    对字符串变量来说,初始化就是把内容清空,本质上也是赋0值

      char name[21];  // 定义一个可以存放20字符的字符串
      memset(name,0,sizeof(name));   // 清空字符串name中的内容

    字符串变量的初始化与其它类型不同,要用memset函数

    三、示例

    test2.c

    1. #include
    2. #include
    3. int main()
    4. {
    5. int i=0; // 定义整数型变量并初始化
    6. char c=0; // 定义字符型变量并初始化
    7. double d=0; // 定义浮点型变量并初始化
    8. char name[20]; // 定义字符串变量
    9. memset(name,0,sizeof(name)); // 字符串初始化
    10. i=10; // 整数型变量赋值10
    11. c='A'; // 字符型变量赋值'A'
    12. d=3.14; // 浮点型变量赋值3.14
    13. strcpy(name,"xiaoqiu"); // 对字符串变量赋值"xiaoqiu"
    14. printf("i=%d\n",i);
    15. printf("c=%c\n",c);
    16. printf("d=%f\n",d);
    17. printf("name=%s\n",name);
    18. }

    运行效果:

     四、strcpy 和 memset 介绍

    C库函数 - strcpy() 

    描述

    C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest,需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况

    声明

    下面是 strcpy() 函数的声明。

    char *strcpy(char *dest, const char *src)

    参数

    dest -- 指向用于存储复制内容的目标数组。

    src -- 要复制的字符串。

    返回值

    该函数返回一个指向最终的目标字符串 dest 的指针

    举个栗子 test3.c

    1. #include
    2. #include
    3. int main()
    4. {
    5. char src[40];// 定义字符串变量
    6. char dest[100];// 定义字符串变量
    7. memset(dest, '\0', sizeof(dest)); //字符串初始化
    8. strcpy(src, "Be happy every day");//对字符串变量src赋值"Be happy every day"
    9. strcpy(dest, src);//把src所指向的字符串复制到 dest
    10. printf("最终的目标字符串: %s\n", dest);
    11. return(0);
    12. }

    运行效果

    C库函数 - memset()

    描述

    C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符

    声明

    下面是 memset() 函数的声明。

    void *memset(void *str, int c, size_t n)

    参数

    str -- 指向要填充的内存块。

    c -- 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。

    n -- 要被设置为该值的字符数。

    返回值

    该值返回一个指向存储区 str 的指针

     举个栗子 test4.c

    1. #include
    2. #include
    3. int main ()
    4. {
    5. char str[50];
    6. strcpy(str,"Not because of my persistence, but because you deserve it.");
    7. printf("%s\n", str);
    8. memset(str,'^',11);
    9. printf("%s\n", str);
    10. return(0);
    11. }

    运行效果

     五、关键字

    关键字也称为保留字,共32个,这些单词在C语言中有特别的含义,不能把它用于变量或函数的命名

      auto:声明自动变量
      break:跳出当前循环
      case:开关语句分支
      char:声明字符型变量或函数返回值类型
      const:声明只读变量
      continue:结束当前循环,开始下一轮循环
      default:开关语句中的“默认”分支
      do:循环语句的循环体
      double:声明双精度浮点型变量或函数返回值类型
      else:条件语句否定分支(与if连用)
      enum:声明枚举类型
      extern:声明变量或函数是在其它文件或本文件的其他位置定义
      float:声明浮点型变量或函数返回值类型
      for:一种循环语句
      goto:无条件跳转语句
      if:条件语句
      int:声明整型变量或函数
      long:声明长整型变量或函数返回值类型
      register:声明寄存器变量
      return:子程序返回语句(可以带参数,也可不带参数)
      short:声明短整型变量或函数
      signed:声明有符号类型变量或函数
      sizeof:计算数据类型或变量长度(即所占字节数)
      static:声明静态变量
      struct:声明结构体类型
      switch:用于开关语句
      typedef:用以给数据类型取别名
      unsigned:声明无符号类型变量或函数
      union:声明共用体类型
      void:声明函数无返回值或无参数,声明无类型指针
      volatile:说明变量在程序执行中可被隐含地改变
      while:循环语句的循环条件

    关键字无需背诵,用多了就熟悉了,本期就到这里,886! 

  • 相关阅读:
    Java基础知识篇02——Java基本语法
    卷积神经网络的训练算法,卷积神经网络算法实现
    记录Vagrant常用的一些命令
    基于插件实现RabbitMQ“延时队列“
    新增分组柱状图,DataEase开源数据可视化分析平台v1.14.0发布
    华为云云耀云服务器L实例评测|RabbitMQ的Docker版本安装 + 延迟插件安装 & QQ邮箱和阿里云短信验证码的主题模式发送
    Wordpress自定义小工具logo调用设置(可视化)
    IntelliJ IDEA 开发Vue项目 ElementUI 未知HTML标记 提示问题的解决
    数据结构第一课 —— 时间和空间复杂度
    Java之JS基础语法 ①(前端)
  • 原文地址:https://blog.csdn.net/XiaoQiu__/article/details/126233240