文章目录

    • 新手上路C语言初识C语言(其二)
  • 导入
  • 一、变量的作用域和生命周期
  • 二、常量
    • 字面常量
    • const修饰的常变量
    • #define定义的标识符常量
    • 枚举常量
  • 三、字符串
  • 四、转义字符
  • 五、注释
  • 六、选择语句
  • 七、循环语句

新手上路C语言初识C语言(其二)

导入

在新手上路C语言初识C语言(其一)中我们知道了在C语言中我们需要自己定义一些变量以及变量的定义格式和基本使用方法,今天我们继续来学习关于变量的作用域和生命周期,和一些特殊的常量或变量,字符串,转义字符,注释,还要初步认识一下选择语句和循环语句的概念,好的,那么今天的学习就要开始了。

一、变量的作用域和生命周期

我们都知道变量有局部变量和全局变量,那么局部变量和全局变量的作用域都是哪些呢,我们来结合以下的代码分析一下

int main()
{int i = 10;printf("%d\n",i);return 0;
}
int i = 10;
int main()
{printf("%d\n",i);return 0;
}

这两个代码运行起来的话结果会是一模一样的结果,也就是变量i不论是全局变量还是局部变量这样都可以正常使用,而如果我们将代码这样写

void test()
{int i = 10;
}
int main()
{printf("%d\n",i);return 0;
}

这样的话编译器就会报错,从以上我们可以看出,局部变量只能在其代码块内使用,而全局变量的作用域在哪里都能用,其实如果你将全局变量即使放到另一个源文件里面只要使用得当,也是可以使用的,也就是说,全局变量的作用域是整个工程,以上就是对变量的作用域和生命周期的解释,我们来总结一下:
局部变量的作用域是其所在的局部范围
全局变量的作用域是整个工程

接下来我们来看变量的生命周期,我们先来理解一下生命周期的概念,生命周期指的是变量从创建到销毁的时间段,我们结合一下代码来理解

void test()
{int i = 0;i++;printf("%d\n", i);
}
int main()
{int a = 0;while (a<10){test();a++;}return 0;
}

该程序的运行结果是打印出十个1,从这里可以看出局部变量i每次进入test函数会被创建,而每次出test函数即会被销毁,所有可以得出结果局部变量的生命周期其实是它的作用域,相同的,如果你去测试会发现全局变量的生命周期其实是整个程序,总结:
局部变量的生命周期从进入作用域开始,出作用域生命周期结束
全局变量的生命周期是整个程序的生命周期

二、常量

C语言中的常量大致可以分为以下几种

  • 字面常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量

字面常量

字面常量就是我们常见的数字,字符,字符串等这些常量,例如数字123,字符‘a’这些量是不可以被随便修改的,称为字面常量;

const修饰的常变量

const修饰的常变量,可能咋一听不太对劲,我们通常说常量变量,但是常变量是怎么一回事呢,我们来结合代码分析,

int main()
{const int g_val = 10;g_val = 8;printf("%d\n",g_val);return 0;
}

如果你将这段代码放入编译器中运行的话,编译器就会报错提示一下结果

那么这也就是说变量g_val具有了常量的属性,它的值是不能被修改的,但是我们为什么说它还是一个变量呢,我们可以用一下验证一下,我们用数组来验证,对于数组来说,在定义数组的时候它的大小是不能是变量的只能是常量,如果我们将const修饰的常变量放到数组中呢,如果被const修饰后变量i变成了常量那么应该能够定义数组,如果不能就说明,即使i具有了常属性但是它依旧是一个变量,我们来看以下代码和结果

int main()
{const int i = 0;int arr[i] = {0};return 0;
}

从这里我们不难看出,变量i依旧还是一个变量,即使被const修饰具有了常属性,看到这里,我们就理解了const修饰常变量到底是个什么来头。

#define定义的标识符常量

#define定义的标识符常量,我们先来看下面代码了解一下基本格式

#define M 100
int main()
{printf("%d\n",M);return 0;
}

这里的M就是我定义的标识符常量,那么它有什么特性呢,没错,既然是常量那么它的值肯定是不能修改的,我们可以来验证一下,

#define M 100
int main()
{M = 20;printf("%d\n",M);return 0;
}


可以看到是不可行的,我们还可以用上面定义数组的方法来看一下,

可以看到,代码是没有什么问题的,看到这里,我们就理解了#define定义的标识符常量。

枚举常量

枚举顾名思义就是一一的列举,而在C语言中给出了这样一种方式,枚举的关键字是enum,来看下面代码

可以看到,枚举常量的值是从0开始,一次向下增加,我们只认识即可,具体的用途放到之后来讲。

三、字符串

我们知道单个字符要用‘’引起来,那么如果我们要表示一串字符呢,这时候就引入了字符串的概念,例如"hello world",这种由双引号引起来的一串字符就叫做字符串,一个字符串的长度是多少呢,这里就要引入一个函数strlen,这个函数是C语言中专门用来计算字符串长度的函数,要使用这个函数需要引用头文件,具体的用法是这样的,看下面代码示例


可以发现我的字符串长度是5,而末尾加了一个\0,这个\0其实是字符串的结束标志,如果没有加这个\0的话,你会发现每次打印出的值都不一样甚至会出现一些乱码,例如烫烫烫烫之类,那么解决办法就是在字符串末尾加上\0,那么我们来看一下\0的值是多少

可以看到\0的值是0,所以我们在字符串末尾加0和\0的结果其实是一样的,都可以作为字符串结束标志,另外字符串还有一种表示方式,在初始化的部分可以采用以下形式

int main()
{char arr[] = {'a','b','c','\0'};return 0;
}

四、转义字符

转义字符,顾名思义就是转变它本来的意思,C语言中的转义字符大概有以下这些,

转义字符 解释
\’ 用于表示字符常量’
\" 用于表示一个字符串内部的双引号
\\ 表示一个反斜杠,防止被转义
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行符
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1到3个八进制数字
\xdd dd表示两个十六进制数字

我们这里只简单介绍几个,有些不常用的不作过多解释
1.'\n’换行符,这个我们天天用,例如

如果没有‘\n’的话打印结果就是abcdef,而图中在中间是换行的效果
2.‘\a’,这是个很有意思的转义字符,推荐大家自己动手试一下,

int main()
{char ch[] = "\a";printf("%s",ch);return 0;
}

直接打印的时候电脑会有蜂鸣的声音,也是计算机上常常听到的警报声

3.‘\ddd’,这里面ddd指的是1~3个八进制数字,会被转义成特殊的字符,我们来看一个例子,

可以看到最终我打印出的结果是个冒号,这个冒号是怎么来的呢,原理其实是073这个八进制序列如果转化成十进制数的话,就是冒号所对应的ASCII码值。
4.‘\xdd’,原理同上,只是要注意是十六进制数字。
转义字符暂且就先介绍这几个吧,接下来我们来看一下注释。

五、注释

关于注释,主要有两个作用
1.代码不想要了,但又觉得删掉可惜,或者临时不用,可以注释掉
2.代码中有些地方难懂,可以用注释来解释说明
C语言中一般有两种注释风格,一种是/xxxxxxx/,另一种是//xxxxxxx
现在基本都用第二种C++的注释风格了,因为第一种如果嵌套使用的话容易导致问题,所以推荐大家尽量使用第二种。在编译器中注释掉的代码会有颜色变化,一般是绿色,如下图

当然了这些代码没有什么本身的意义,只是为大家演示一下注释的效果。

六、选择语句

假如现在给你两个选择,1好好学习,最终成为大佬拿到好的offer,2随大流打游戏娱乐,而这两种选择的结果肯定是不一样的
那么在C语言中怎么来实现呢,看下面代码

int main()
{int i = 0;printf("你要好好学习吗\n");printf("好好学习请输入1,打游戏请输入2\n");scanf("%d",&i);if (i == 1)printf("成为大牛,拿到好offer\n");else if(i==2)printf("回家卖红薯\n");elseprintf("输入错误\n");return 0;
}

分析这个代码我们就达到了实现选择的目的,当然我们今天只是举个简单的例子,后面我们再深入学习分支与循环的知识,关于选择语句,我们就点到为止。

七、循环语句

假如你开始学习编程,每天坚持学习,如果有一天你的代码积累量达到了十万行,这个时候你成了大牛,可以走上人生巅峰了,在这期间肯定每天都要敲代码,这就是一个循环的例子,那么这个例子我们在C语言中怎么实现呢,

int main()
{int line = 0;while (line <= 100000){printf("敲代码%d\n",line);line++;}if (line > 100000)printf("成为大牛\n");elseprintf("好好学习,天天编程\n");return 0;
}

关于循环语句呢,其实有三种类型,每一种都有其独特的功能,今天我们只稍微举了一个while循环的例子,这三种类型有

  • while循环
  • for循环
  • do…while循环

关于分支和循环我们放到之后再来深入学习,今天的新手上路C语言初识C语言(其二)系列内容属实也不少了,今天就到这里吧。

新手上路C语言初识C语言(其二)相关推荐

  1. 请回答c语言-初识c语言(上)【入门】

    请回答c语言-初识c语言(上)[入门] 1.为什么我们要学习c语言? 2.什么是C语言 3.第一个C语言程序 4.利用编译器 5.数据类型 6.常量与变量 6.1变量的定义方法 6.2局部变量和全局变 ...

  2. C语言-初识C语言(4)

    11.常见关键字 auto    break    case   char  const   continue   default   do   double   else   enum   exte ...

  3. 0基础玩转C语言—初识C语言(上)

    初始C语言(上) 一.开门见山 1.1.第一个C语言程序 1.2.程序解剖 二.数据类型 2.1.为什么引入数据类型? 2.2.C语言中有哪些基本数据类型? 2.3.每种类型的大小是多少? 2.4.数 ...

  4. ea=1是什么意思 c语言,初识C语言1

    什么是C语言 人与人之间的沟通须要语言,而人与计算机之间沟通也须要语言,计算机只能识别这种由0和1组成的二进制,因此最开始人与计算机是用二进制构成的机器语言沟通的,可是因为其复杂,人们便用符号来定义二 ...

  5. C语言——初识C语言(define定义常量和宏,指针,结构体)

    1.1define定义常量和宏 define    定义符号(定义常量) //define 定义标识符常量 #define MAX 1000 define    定义宏(宏是有参数的,参数用来替换) ...

  6. C语言入门(初识C语言)

    C语言入门(初识C语言) 前言 什么是C语言? 为什么选择C语言? 计算机语言的发展 高级计算机语言中的经典:C语言 初识C语言(正片开始) 一.第一个C语言程序(你好,C语言) 1.1 #inclu ...

  7. 视频教程-R语言从入门到精通系列之新手上路视频课程-其他

    R语言从入门到精通系列之新手上路视频课程 WOT峰会讲师,中国R语言大会讲师,数据分析师,8年以上数据挖掘建模工作实战经验,部分研究成果获国家专利,攥写<R语言与数据挖掘>.<数据先 ...

  8. 初识C语言---(4)

    目录 指针初识 结构体 指针初识 学习指针知识,我们得首先了解内存方面的知识: 内存: 内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 . 所以为了有效的使用内存,就把内存划分成一 ...

  9. 从零开始C语言精讲篇1:初识C语言

    文章目录 前言 一.什么是C语言(了解) 二.第一个C语言程序 三.数据类型 四.变量.常量 4.1变量 4.1.1定义变量的方法 4.1.2变量的分类 4.1.3变量的使用 4.1.4变量的作用域和 ...

最新文章

  1. 用计算机计算教学反思,《用计算器计算》教学反思
  2. Flash/Flex学习笔记(4):如何打开网页及Get/Post数据
  3. Atom常用功能插件
  4. 中考新大纲:初中数学无非就这26个考点!孩子吃透,再笨也能考115分!
  5. JS将指定的时间戳转为UTC时间
  6. 前端学习(2786):完成推荐商品结构之头部标签栏
  7. 知识付费阅读小程序源码,前端+后台+代理+分销
  8. scala学习-scala读取Hbase表中数据并且做join连接查询
  9. readfile读取串口数据_谈一谈使用字体库加密数据仿58同城
  10. Android 读取Assets资源
  11. atitit.高级编程语言的特性 and 未来趋势与进化.doc
  12. 带你了解常见的编码表,以及他们自己的关系.
  13. 图书馆管理系统的c语言,图书馆管理系统 c语言.doc
  14. 初中计算机课堂游戏设计方案,初中信息技术教案设计
  15. 5e服务器优化参数,终极优化篇(7700KOC4.8G+1070默认+16GDDR43000)5E练枪图1080P700FPS...
  16. 【信息检索导论】第一章 布尔检索
  17. mysql命令创库创表_创库+表的操作
  18. **[UE4技巧]** UE4 的导入模型人物处理(下) — 全面替换小白人,实现人物模型自由
  19. 充满正能量阳光活的生日祝福语
  20. 仿真软件ADS2015安装破解教程

热门文章

  1. 从ihmc将研发全尺寸人形机器人Nadia带来的关于硬件平台和驱动原理的思考
  2. Highmaps重庆地图数据JSON格式
  3. lecture 3:Python数据的描述性统计
  4. 信托业谋建金融控股集团,打造全牌照金融机构
  5. freeswitch带媒体压力测试方案
  6. python生成pdf报表
  7. Go语言GoString与C中char*的异同
  8. sql修改日期不改变时间
  9. Least Squares Conformal Maps for Automatic Texture Atlas Generation用于自动纹理图集生成的最小二乘保角映射
  10. 分享一个非常好用的录屏软件