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

#include <stdio.h>
#include <string.h>

int main()
{
  int   i=0;   // 定义整数型变量并初始化
  char  c=0;   // 定义字符型变量并初始化
  double d=0;   // 定义浮点型变量并初始化
  char name[20];  // 定义字符串变量

  memset(name,0,sizeof(name));  // 字符串初始化

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

  printf("i=%d\n",i);
  printf("c=%c\n",c);
  printf("d=%f\n",d);
  printf("name=%s\n",name);
}

运行效果:

 四、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

#include <stdio.h>
#include <string.h>

int main()
{
   char src[40];// 定义字符串变量
   char dest[100];// 定义字符串变量

   memset(dest, '\0', sizeof(dest)); //字符串初始化
   strcpy(src, "Be happy every day");//对字符串变量src赋值"Be happy every day"
   strcpy(dest, src);//把src所指向的字符串复制到 dest

   printf("最终的目标字符串: %s\n", dest);

   return(0);
}

运行效果

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

#include <stdio.h>
#include <string.h>

int main ()
{
   char str[50];

   strcpy(str,"Not because of my persistence, but because you deserve it.");
   printf("%s\n", str);

   memset(str,'^',11);
   printf("%s\n", str);

   return(0);
}

运行效果

 五、关键字

关键字也称为保留字,共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! 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

易点点心动

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

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

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

打赏作者

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

抵扣说明:

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

余额充值