C语言初阶--初识C语言(2)

简介: C语言初阶--初识C语言(2)

三、认识变量与常量:

4. 常量的分类:

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

1)字面常量:

  字面常量就是可以直接看到的量,如图中的100、c、abcdef,这些能够一眼看到的量就是字面常量。

  2)const修饰的常变量:

  听到常变量这个词一定感觉很奇怪,那在这之前我们来看这么一段代码:

  a输出两个值说明了a是一个变量,下面我们用const修饰一下看它的结果会不会改变呢?

 这时候代码第7行报错,很明显被const修饰过的变量a的值是不能够被改变的。

 由此我们可以说const修饰的是一个具有常属性的变量。上面我们已经证明他具有常属性,下面我们再来验证一下它还是不是变量:

  两段代码的运行结果一样,同样的报错,代码报错的原因是:定义数组arr[ ]时,[ ]中不能为变量。由此可见,即使加了const,n本质上仍然是变量,只不过是具有常属性的变量。

  注意:以上所说的定义数组时[ ]中不能为变量只是针对不支持C99的编程软件来说,例如vs2019。如果你的编程软件支持C99,那定义数组时可以用变量。

 3)#define定义的标识符常量:

  注意定义标识符常量时中间不需要等号:#define MAX 100

4)枚举常量:  

  枚举就是一一列举,枚举是C语言提供的一种自定义类型的方法。

  生活中,性别:男,女,保密。三原色:red green blue。都是可以一一列举出来的常量。

用代码表示:

enum就是枚举类型,大括号中的就是枚举常量。我们可以用大括号中可能出现的值来给变量s赋值: enum SEX s = MALE;

四、字符串+转移字符+注释

  1.字符串

  “hello world.\n”这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。

  注意:字符串的结束标志是一个\0的转义字符。在计算字符串长度时\0是结束标志,不算作字符串内容。

 下面我们定义一个字符串数组,按F10键调试一下:

 

    打开调试→窗口→监视,并在监视名称输入arr会发现,在 f 后面还多出现一个 \0(如下图所示), \0是字符串“abcdef”的结束标志。

换一种定义数组的方式:

同样进行调试并打开监视窗口:

此时我们发现 f 后面并没有出现 \0 ,那就说明此时的数组中存放的不是字符串。

打印一下两个数组:

   会发现arr2后面打印出了一堆乱码,这是因为数组arr2中没有结束标志\0,而计算机中内存是连续的,它会持续打印下去,直到在内存的某个地方遇见了 \0 才会结束打印。

用代码计算一下两种方式数组的长度也有不同:

注:在计算字符串长度时\0是结束标志,不算作字符串内容。

strlen为函数,用来求字符串的长度。注意使用时,要包含<string.h>这个头文件

即#include<string.h>

如果给数组arr2中添加上结束标志 \0 结果就相同了:

2.转义字符

 转义即转变它的意思。

 先看下面一段代码:

为什么打印出来的结果和代码中的不一样呢?

   答案是在 t 前面加斜杠后就改变了它的意思,\t 是一个转义字符,相当于电脑上的Tab键,打印出来的结果就变成以上形式。

类似的:n前面加上斜杠变成 \n 表示换行:

下面来看一些转义字符:

\?        解释一下三字母词:例如:如果电脑支持三字母词,在电脑中 ??)这三个符号会被解析为 ],那么 printf("(Are you ok??)");打印出来的结果就是(Are you ok]

            如果想打印出来(Are you ok??),就需要这样写:(Are you ok\?\?)

\'        如果想打印一个字符 '    直接写是不对的,应该写为

\"       如果要打印一个字符串 " 直接写不对,应该写为

\\      如果不想将 \t 写成转义字符 那么在它的前面再加一个斜杠变成 \\t 就会打印出 \t,如下图:

对比一下就可以很清楚地了解 \\ 的作用了。

接下来着重介绍一下 \ddd 和 \xdd :

\ddd:   ddd表示1~3个8进制数

看下面一段代码:

为什么字符 \130 打印出来是 X 呢?

    图中的130代表的是8进制数,转换为10进制数为1*64+3*8+0*1=88,而在ASCII表(此表文章后面desh给出)中十进制的88代表的字符刚好就是 X 。

   由此可见,\ddd表示的就是把1~3位8进制数转换为10进制数的值对应在ASCII表中代表的字符。

\xdd:  dd代表2个16进制数字

  类似\ddd,

   字符 \x67 打印出来是 g ,图中67代表的是16进制数,转换为10进制数为103,对应在ASCII表中的字符为 g

由此可见,\xdd表示的是把2位16进制数转换为10进制数的值对应在ASCII表中代表的字符。

每个字符都有对应的ASCII值,例如A~Z——65~90,a~z——97~122

特别的,大写字母的ASCII值+32=小写字母的ASCII值

通过上面的学习,我们了解了转义字符,那么让我们来测验一下掌握的程度吧!

请看下图并回答:打印出来的字符串长度是多少呢?提示:8进制中每一位上的数最大为7。

答案放在评论区。

3.注释

注释有两个作用:

1.代码中有不需要用的代码可以直接删掉,也可以直接注释掉。

2.代码中有些代码比较难懂,可以加一下注释文字。

如图中的绿色文字即为注释:

对于不需要的代码有两种注释方法:

一种是直接在前面加 // 进行注释:这是C++的注释方式

另一种是对需要注释的内容首尾分别加 /* 和 */ 进行注释:这是C语言的注释方式

但是这种注释方法有缺陷:

   上图我们用了两个/* */来注释,但是注释到第一个 */ 就停了下来。由此可见,C语言的注释方式不能嵌套使用。

除此之外,还有一种更方便的注释方式:在选中后点击编译软件中的

就可以进行大段的注释。点击它的右边一位可以取消注释。

五、选择语句

 常见的选择语句有:

   1.二路分支:if语句

   2.多路分支:switch语句

今天只介绍if语句:

六、循环语句

常见的循环语句:

   1.while语句

   2.for语句

   3.do...while语句

今天只介绍while语句:例题:1~100求和并输出。

这里简单了解一下,后面再深入学习。

七、函数

直接通过代码来理解吧:

首先我们用正常的方式来写一段两数求和的代码:

下面采用调用函数的方式 写一段两数求和的代码:

   由图可见,我们是先在主函数之前写了一段具有求和功能的函数Add(),然后在主函数中需要求和时选择直接调用函数Add()实现求和功能。

  问题来了,明明这么简单的代码非要写复杂呢?

  其实函数会极大地减少代码量,只不过我们举例的两数求和很简单体现不出来它的价值。在以后的学习工作中,我们可能遇到同一段代码在不同的地方重复使用,这时候我们为了避免一遍遍写这段代码,就可以先写一个功能相同的函数,然后在需要时只调用函数就可以了。

八、数组

 要存储1~10的数字,怎么存储呢?

 这时候就要用到数组了,数组是一种相同类型元素的集合

1.数组的定义

 定义数组时 [ ] 内为数组的长度,存放的元素数不能超过长度。

 定义时可以不规定 [ ] 内的长度

 不规定长度时一定要初始化,不初始化时一定要规定长度。

2.数组的下标

  C语言规定:数组的每个元素都有一个下标,下标是从0开始的。

  比如:

  数组可以通过下标来访问:如下图下标为5的数组元素打印出来是6

 我们也可以用循环来打印出数组所有的元素:

   今天就学到这里,未完待续。。。

目录
相关文章
|
6月前
|
C语言
C语言初阶⑧(结构体)知识点和笔试题
C语言初阶⑧(结构体)知识点和笔试题
62 0
|
5月前
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
44 0
|
6月前
|
C语言 数据安全/隐私保护
C语言初阶②(分支语句和循环语句)编程练习
C语言初阶②(分支语句和循环语句)编程练习
57 1
|
6月前
|
存储 编译器 C语言
C语言初阶⑦(指针初阶)知识点+笔试题(上)
C语言初阶⑦(指针初阶)知识点+笔试题
41 0
|
6月前
|
算法 程序员 编译器
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
49 0
|
4月前
|
编译器 C语言
【C语言初阶】指针篇—下
【C语言初阶】指针篇—下
|
4月前
|
存储 C语言
【C语言初阶】指针篇—上
【C语言初阶】指针篇—上
|
5月前
|
C语言
【初始C语言8】详细讲解初阶结构体的知识
【初始C语言8】详细讲解初阶结构体的知识
|
6月前
|
程序员 编译器 测试技术
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
47 1
|
6月前
|
存储 Linux C语言
C语言初阶⑥(操作符详解)编程作业(算数转换)(下)
C语言初阶⑥(操作符详解)编程作业(算数转换)
37 1