初识C语言(二)

目录

常量与变量

变量

变量的位置

作用域

生命周期

常量

①字面常量

②const修饰的常变量

③#define定义的标识符常量

④枚举常量

字符串类型

ASCII码表

转义字符


常量与变量

变量

变量有局部变量和全局变量之分,借下面一段程序介绍。

变量的位置

#include <stdio.h>
int num1 = 10;//全局变量,定义在代码块({})之外
int main()
{
  int num2 = 20;//局部变量,定义在代码块({})之内
  return 0;
}

注:当局部变量和全局变量名字相同时,局部变量优先。

作用域

局部变量的作用域是变量所在的局部范围,全局变量的作用域是整个工程。

生命周期

局部变量的生命周期是:进入作用域,生命周期开始;出作用域生命周期结束(销毁)。全局变量的生命周期是:整个程序的生命周期。

常量

①字面常量

直接写出来的

②const修饰的常变量

#include <stdio.h>
int main()
{
  const int num = 4;
  printf("%d\n",num);
  num = 8;
  printf("%d\n",num);
  return 0;
}
//程序运行失败,因为变量num一经const修饰,便具有了常属性,其值不再改变

上面的程序中虽然num被const修饰,具有了常属性,但本质上依然是变量。

例如,下面这种定义数组的方式是错误的。

const int n = 10;
int arr[n] = {0};

③#define定义的标识符常量

# include <stdio.h>
# define MAX 10//下面出现的所有的MAX均代表10,被称为标识符常量
int main()
{
  int arr[MAX] = {0};
  printf("%d\n",MAX);
  return 0;
}

④枚举常量

枚举类型的定义形式为:

enum typeName{ valueName1, valueName2, valueName3, ...... };

enum是一个新的关键字,专门用来定义枚举类型,这也是它在C语言中的唯一用途。typeName是枚举类型的名字。valueName1, valueName2, valueName3, ......是每个值对应的名字的列表。注意最后的;不能少。

enum week{Mon,Tues,Wed,Thurs,Fri,Sat,Sun};

我们仅仅给出了名字,却没有给出名字对应的值,这是因为枚举值默认从 0 开始,往后逐个加 1(递增);也就是说,week 中的 Mon、Tues ...... Sun 对应的值分别为 0、1 ...... 6。我们也可以给每个名字都指定一个值,更为简单的方法是只给第一个名字指定值。

enum week{Mon = 1,Tues,Wed,Thurs,Fri,Sat,Sun};

这样枚举值就从 1 开始递增。

字符串类型

由双引号引起的一串字符,注:字符串结束的标志是转义字符\0,计算字符串长度时不作为其中的内容。

//打印字符串
# include <stdio.h>
# include <string.h>
int main()
{
  char arr1[] = "abc";//"abc":'a','b','c','0'
  char arr2[] = {'a','b','c'};
  printf("%s\n",arr1);//打印正确
  printf("%d\n",strlen(arr1));//打印字符串arr1的长度,为3
  printf("%s\n",arr2);//打印错误,'a','b','c'为单个字符应该再加一个'\0'
  printf("%d\n",strlen(arr2));//打印字符串arr2的长度,为随机值,直到遇到\0
  return 0;
}

ASCII码表

数据以二进制的形式在计算机中存储。

如字符a的十进制是97,字符A的十进制是165,字符\0的十进制是0

转义字符

顾名思义,转变原来的意思,如\0不再是0而是作为字符串的结束标志;\n不是n,而是换行。

\?在书写连续多个问号时使用,防止它们被解释为三字母词
\'表示'
\"表示"
\\表示单个反斜杠\
\n换行
\t水平制表符
\dddddd表示1-3个8进制数字
\xdddd表示2个16进制数字
//打印路径c:\test\32\test.c
printf("c:\\test\\32\\test.c");
//打印字符a
printf("%s\n",'a');
//打印字符'
printf("%s\n",'\'');
//打印字符串a
printf("%s\n","a");
//打印字符串"
printf("%s\n","\"");
计算c:\test\32\test.c的长度
printf("%d\n",strlen("c:\test\32\test.c"));//结果为13
//\32表示32(8)对应的十进制数作为ASCII码值所代表的字符
//32(8)=26(10),所以\32表示->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值