初识C语言(二)
前言
作者:龟龟不断向前
简介:宁愿做一只不停跑的慢乌龟,也不想当一只三分钟热度的兔子。
专栏:C++初阶知识点
如果觉得文章对你有帮助的话,还请点赞,关注,收藏支持博主,如有不足还请指点,博主及时改正
初识C语言(二)
文章目录
- 初识C语言(二)
- 初识C语言(二)
- 1.作用域与生命周期
- 作用域
- 局部变量作用域
- 全局变量的作用域
- 生命周期
- 局部变量的生命周期
- 全局变量的生命周期
- 2.常量
- `const`修饰的常变量
- `#define`修饰的标识符常量
- 枚举常量
- 3.字符串
- 定义字符串
- 计算字符串的长度
- 转义字符
- 笔试题
- 4.注释
- 5.选择语句
- if-else语句
- 6.循环语句
- while循环语句
1.作用域与生命周期
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用
的而限定这个名字的可用性的代码范围就是这个名字的作用域。
局部变量作用域
局部变量所在的局部范围(代码块)
#includeint main(){{int a = 0;printf("%d\n", a);}printf("%d\n", a);//error,由于a的作用域是上一个代码块,无法在这一行使用return 0;}
通常我们将 {}所包围的区域 叫做 代码块
这里有些同学经常误认为局部变量的作用域是main函数的范围,这是不准确的,局部变量所在的{}范围是其对应的作用域!
全局变量的作用域
整个工程–局部变量不仅仅只局限于main函数的代码块,在其他的函数代码块依旧能使用。
#includeint global;//声明void test(){printf("%d\n", global);//这里的值是100000}global = 100000;//不写这个,输出0,全局变量默认值为0int main(){printf("%d\n", global);test();return 0;}
这里我们可以看到,局部变量global
不仅仅在main函数的代码块可以用,在test函数的代码块也可以使用
上述代码对
global
进行声明的原因是,编译器是向上扫描,向下执行的,如果不写int global;
这句代码,那么编译器执行test函数的时候,就不知道global
是什么意思了,int global;
就是告诉编译器后面有global
这个全局变量,而且值由后面的定义决定(默认是0)
不仅如此,就算是多个源文件中只有一个全局变量,这个全局变量也可以在每个源文件中都可以使用,因为其作用域是整个工程
这样全局变量global
也是可以正常使用的
注意,如果全局变量在外部源文件中,声明方式和上面的略有不同,需要在前面加上==extern
关键字–进行外部声明。==
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
作用域和生命周期是两个不同的概念,但是他们之间又是存在联系的
局部变量的生命周期
程序也是有生命周期的,或者说是运行时间。而我们上述所说的,局部变量的作用域与其声明周期是有联系的。
局部变量生命周期:进入作用域生命周期开始,出作用域生命周期结束。
全局变量的生命周期
全局变量的生命周期是:整个程序的生命周期。
2.常量
const
修饰的常变量
用法如下:
#includeint main(){const int n = 10;n = 200;//errorreturn 0;}
我们可以发现上述代码是编不过去的,n不允许被修改,这就和常量很像了,常量是不变的
可是为什么又叫常变量呢?
在此之前我们要介绍以下数组的概念
C语言中给了数组的定义:一组相同类型元素的集合
语法:元素类型 + 数组名 + [元素个数]//元素个数只能是常量
#includeint main(){const int n = 10;int arr[n];//error--报错return 0;}
这里我们运用了数组元素个数必须是常数的属性,进而证明了上述的n其实还是一个变量,只是具备了常属性(不能被修改)而已
#define
修饰的标识符常量
目前文章暂时不做深究,大家了解其用法即可
#define M 10#includeint main(){printf("%d\n", M);int arr[M];return 0;}
枚举常量
一 一列举出一些常量
enum RGB//三原色{RED,GREEN,BLUE};int main(){enum RGB Color = BLUE;printf("%d\n", RED);printf("%d\n", GREEN);printf("%d\n", BLUE);int arr[BLUE];//无意义--只是为了测试枚举常量是常量return 0;}
还是一样对齐不做深究,大家先知道有这么个东西即可
3.字符串
"hello bit.\n"
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符
串。注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串
内容。
定义字符串
既然字符串是一串字符,但是我们前面介绍的
根据字符串的定义:双引号引起来的一串字符叫做字符串,并且字符串是有\0作为结束标志的,所以"abc"
看似只有abc
其实暗含着\0
,所以\0
也放入了数组str2
中。所以str1
会abc
后输出随机值(随机值里面也可能有\0),而str2
正常输出
计算字符串的长度
库里面设计了一个函数
strlen
帮助我们直接计算字符串的长度
strlen
– string length
#includeint main(){char str1[] = { 'a', 'b', 'c'};char str2[] = "abc";printf("%s:", str1);printf("%d\n", strlen(str1));printf("%s:", str2);printf("%d\n", strlen(str2));return 0;}
这个11并不是必然产生的是随机的,大家运行上述代码可能是其他值。
转义字符
有些字符看起来是\0,\n,\t,但是他们已经不再是原来的意思了,而被转变成了其他意思
例如我们经常写的\n–换行的意思
这样的字符我们将其成为转义字符
这里特别提醒大家,转义字符算一个字符,算字符串长度的时候大家要注意
其中转义字符有\
和一些特定字符和数字组成
下面给大家列出C语言全部的转义字符
转义字符 | 释义 |
---|---|
\" /> |