4.4 变量的作用域和生命周期
- 作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用
的而限定这个名字的可用性的代码范围就是这个名字的作用域
1.局部变量的作用域是变量所在的局部范围。
2.全局变量的作用域是整个工程。
- 生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
这里的销毁是,把空间还给操作系统
1.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2.全局变量的生命周期是:整个程序的生命周期。
我们进一步了解一下变量的作用域与生命周期
这段代码中,我们定义的变量a在第二个{}里,即它的作用域,出了这个{}就不起作用了。
如果我们希望输出a,就需要在{}前先做
定义。
代码如下:
#include<stdio.h> int main() { int a = 10; { a = 5; } printf("%d\n", a); return 0; }
运行结果:
说明:
如果源文件需要引用其他文件中的变量,我们可以在文件中用extern声明
能够被其他模块以extern修饰符引用到的变量通常是全局变量。
4.5 常量
C语言中的常量分为以下几种:
- 字面常量
- const 修饰的常变量
- #define 定义的标识符常量
- 枚举常量
#include<stdio.h> enum color { RED,GREEN,BLUE//枚举常量 }; int main() { //字面常量 3.14; 'a';//字符 "abc";//字符串 //const修饰的常变量 const int pi=3.14f;//这里的pi是const修饰的常变量,具有常属性,但本质还是变量 pi=2.6;//pi是不能直接修改的 //变量一旦定义就不能修改 //#define #define SIZE 10 printf("size = %d\n",SIZE);//输出:10 //枚举常量 printf("%d\n",RED);//输出:0 printf("%d\n",GREEN);//输出:1 printf("%d\n",BLUE);//输出:2 //枚举常量的默认是从0开始,依次向下递增1 return 0; }
5. 字符串&转义字符
5.1 字符串
"hello world"
这种由双引号引起来的一串字符称为字符串字面值,简称为字符串.
注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容。
#include<stdio.h> #include<string.h> int main() { char a1[] = "hello";//这里隐藏了\0 char a2[] = { 'h', 'e', 'l', 'l', 'o' }; char a3[] = { 'h', 'e', 'l', 'l', 'o', '\0' }; printf("%s\n", a1); printf("%s\n", a2); printf("%s\n", a3); return 0; }
运行结果:
调试代码,可以直观地看到’\0’就是字符串结束的结束标志。
我们也可以通过计算字符串的大小进一步证明:
strlen()计算字符串的长度,即字符的个数,遇到’\0’结束,不包括结束字符’\0’
sizeof()计算的是数据所占空间内存的大小,单位是字节
5.2 转义字符
- 转义字符顾名思义就是转变意思
我们先看看下面的代码运行结果会是什么呢?
#include<stdio.h> int main() { printf("c:\code\test.c\n"); return 0; }
运行结果:
在这里面就存在着一些转义字符。
转义字符 | 释义 |
? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
’ | 用于表示字符常量 |
" | 用于表示-一个字符串内部的双引号 |
\ | 用于表示一个反斜杠,防止它被解释为-个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 换页符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | d d d表示1-3个八进制的数字。如: \130 表示字符X |
\xddd | d d表示2个十六进制数字。如: \x30 表示字符0 |
了解了转义字符后,我们可以看看下面代码中的字符串长度。
#include<stdio.h> #include<string.h> int main() { printf("%d\n",strlen("c:\test\178\x65\test"));//13 return 0; }
6. 注释
- 有不需要的代码行可以直接删除,也可以注释掉
- 代码中有写代些代码不好理解,可以加入注释文字
#include<stdio.h> int Fun(int x, int y)//定义乘法函数 { return x*y; } /*C语言注释风格 int Sum(int x, int y) { return x + y; } */ int main() { //C++注释风格 //int a, b; //printf("%d\n", Sum(10, 20));//调用Sum函数,完成加法 printf("%d\n", Fun(10, 20));//调用Fun函数,完成乘法 return 0; }
注释的两种风格:
- C语言风格的注释 /xxxxxx/
缺陷:不能嵌套注释
- C++风格的注释 //xxxxxx
可以注释一行也可以注释多行
结束语
以上就是我这次文章的分享,对C语言的几个基础概念进行了总结,希望对大家有所帮助。如果有不对的地方,还希望大家可以评论指正,我一定会及时来修改的。
路漫漫其修远兮~
我们下篇文章再见。