作者前言:

欢迎小可爱们前来借鉴我的gtieehttps://gitee.com/qin-laoda

目录

变量的作用域和生命周期

常量

字符串+转义字符+注释 选择语句

循环语句

函数_________________________________________________

这次我们接着上一篇博客,我们接着来继续C语言的学习

变量的作用域和生命周期

变量的作用域:

简单的说就是变量的作用范围,比如我们创建了一个全局变量,作用域就是整个程序

局部变量就是在某块地方或者某个函数内使用

下面我要代码简单的讲解一下

#include int b = 10;int main(){{int a = 20;printf("%d\n", b);//(1)}printf("%d\n", a);//(2)printf("%d\n", b);//(3)return 0;}

变量b是全局变量,a为局部变量 ,其中(1)和(3)都能打印出来,但是(2)却不能,因为a超出了自己的作用范围,

变量的生命周期:

变量的生命周期就是指,从变量诞生到变量销毁的时间段(可以理解为人的出生到死亡的时间)

局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束的时间段。 全局变量的生命周期是:整个程序的生命周期(全局变量的创建到整个程序的结束的时间段)。 这两者可以说是有关系但是这个关系又很微妙,当我们学习C语言更进一步会慢慢的理解

常量

分为四种

字面常量

45;

const修饰的常变量

代码一;

#include int main(){int a = 10;printf("%d\n", a);a = 20;printf("%d\n", a);const int c = 20;printf("%d", c);c = 30;//这一个变量无法更改return 0;}

代码二:

int main(){const int a = 10;int arr[a] = { 1,2,3,4,5 };return 0;}

上面小可爱可以去运行看看,都会报错足以看出常变量还是变量

常变量:是具有常属性的变量,一个变量被const修饰就会变成常变量,具有常量的属性但本质上还剩变量

#define定义的标识符常量

#define M 100int main(){printf("%d", M);return 0;}
#define M 100int main(){int arr[M] = { 1,2,3,4,5 };return 0;}

可以看出是常量

枚举常量

枚举:一一列举出来

比如RGB的三颜色 红 绿 蓝

代码:

#include enum Color {REN,GREEN,BLUE};int main(){enum Color c = REN;printf("%d\n", c);enum Color a = GREEN;printf("%d\n", a);enum Color b = BLUE;printf("%d\n", b);return 0;}
#include enum Color {//枚举常量REN=6,GREEN=3,BLUE=9};int main(){enum Color c = REN;printf("%d\n", c);enum Color a = GREEN;printf("%d\n", a);enum Color b = BLUE;printf("%d\n", b);return 0;}

上面一个是默认值,一个是可以赋值

所以枚举常量值可以改变

字符串+转义字符+注释

字符串

“hello”

由双引号( Double Quote )引起来的一串字符称为字符串字面值( String Literal ),或者简称字符 串。 字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串 内容下面我来演示

#include int main(){//字符串是可以存放在字符数组中的char arr[] = "bit";//我们放入数组的个数为4,其中的\0我们是看不见的char arr1[] = { 'b','i','t' };//我们放入数组的个数为3个printf("%s\n", arr);printf("%s\n", arr1);//要遇见\0才停止打印,因为\0为字符串的结束标记,return 0;}

结果:

可以看出字符串的打印停止是要遇见’\0′,注意arr我们放入的元素为bit\0,arr1放入的是bit不要混淆了

或者我们打印一下字符串的长度

代码如下:

#include #include int main(){//字符串是可以存放在字符数组中的char arr[] = "bit";//我们放入数组的个数为4,其中的\0我们是看不见的char arr1[] = { 'b','i','t' };//我们放入数组的个数为3个printf("%s\n", arr);printf("%s\n", arr1);//要遇见\0才停止打印,因为\0为字符串的结束标记,printf("arr的长度为:%d\n",strlen(arr));printf("arr1的长度为:%d\n",strlen(arr1));return 0;}

结果:

看看是不是就可以理解’\0’是字符串的结束标记

strlen() 计算字符串的长度,但是是计算’\0’前面的字符,’\0’不计算进去,但是’\0’也是字符,如果字符串的真正长度就是strlen()+1,——–要引入头文件

而前面的sizeof()计算的是空间大小,是计算所有的,就拿上面的来说,只计算数组里面所有元素的总空间大小

转义字符

\” />\’ 用于表示字符常量’ \“ 用于表示一个字符串内部的双引号 \\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。 \a 警告字符,蜂鸣 \b 退格符 \f 进纸符 \n 换行 \r 回车 \t 水平制表符 \v 垂直制表符 \ddd ddd表示1~3个八进制的数字。 如: \130 X \xdd dd表示2个十六进制数字。 如:\x30 0

转义字符简单的讲就是转变原来的意思

下面我们来演示一下

#include int main(){printf("c:\nfdf\tghg\dff");return 0;}

看看是不是和自己的想法有误啊,这就是存在了转义字符的干扰

注意一下啊 一个转义字符是一个字符哦哦

\” />’ “

下面我们来演示

#include int main(){printf("%c", '\'');return 0;}

\”这个转义字符是打印’

代码如下:

#include int main(){//printf("%c", '\'');printf("%c", '\"');return 0;}

结果:

\a 蜂鸣声

\n换行符

\b退格符(删除前面一个字符再打印)

代码:

lude int main(){printf("ssf\bdff");return 0;}

结果:

\t 水平制表符

就是再\t前面的字符以四个为一组,不够就补上空格

下面的两个转义字符比较重要,

\ddd

ddd 表示 1~3 个八进制的数字。 如: \130 X 下面代码演示

代码:

#include int main(){printf("\\151对应的十进制为%d\n", '\151');printf("\\151对应的ASCII值所对应的字符是%c\n", '\151');return 0;}

结果: \xdd dd表示2个十六进制数字。 如: \x30 0 代码:

#include int main(){printf("\\x56对应的十进制为%d\n", '\x56');printf("\\x56对应的ASCII值所对应的字符是%c\n", '\x56');return 0;}

结果:

可能有些小可爱不知道ASCII是啥,下面我找来一个图给你们看看

ASCII表:ASCII值对应的字符,注意有一些字符(0~31)电脑无法打印出来,不要瞎搞,大写字母+32得出对应的小写,小写字母-32得出对应的大写字母

注释

注释有两种 1./**/2.//

不要过度注释

选择语句(选择结构)

if else switch

以烤红薯为例

代码如下

#include int main(){int a = 0;printf("你是否加入比特(0/1):>\n");scanf("%d",&a);if (a == 1)printf("恭喜你加入比特\n");printf("是否好好学习(0/1):\n");scanf("%d",&a);if (a == 1)printf("好offer");elseprintf("种红薯");return 0;}

switch现在先不写,后面我再来讲解

循环语句

for while do…..whlie

代码如下

#include int main(){printf("加入比特");int a = 1;int line = 0;while (a){int b = 0;char arr[] = { 'a','b','c' };printf("是否买彩票(0/1):>\n");scanf("%d",&b);if (strlen(arr) == 15){printf("恭喜你中奖了");printf("迎娶白富美");break;}printf("你没中奖,好好学习吧");line++;if (line == 30000){printf("经过你的努力,你成大牛了");printf("迎娶白富美");break;}}return 0;}

break是停止循环

函数

就拿我们数学来讲 y=2*x+5 x可以赋不一样的值,y也会获得不一样的值

我们平时写的代码求和是这样写的

#include int main(){int a = 0;int b = 0;int sum = 0;scanf("%d %d", &a, &b);sum = a + b;printf("%d", sum);return 0;}

如果我们要写成函数就要把一部分代码放入一块地方保存,如果需要就拿出来使用

#include //函数的声明int Add(int a, int b){int sum = 0;sum = a + b;return sum;}int main(){int a = 0;int b = 0;int sum = 0;scanf("%d %d",&a, &b);sum = Add(a, b);printf("%d", sum);return 0;}

函数的定义 要知道函数的数据类型 ,函数名,函数是否有参数,如果有参数,是啥样的参数呢,还要有函数里面你想写啥内容,上面代码就可以说明,要写入计算两个变量的和,那我们就要在函数内写出计算两个变量之和的代码,记住要有返回值,

还有另一种写法

#include int Add(int a, int b);//函数的声明int main(){int a = 0;int b = 0;int sum = 0;scanf("%d %d",&a, &b);sum = Add(a, b);printf("%d", sum);return 0;}//函数的定义int Add(int a, int b){int sum = 0;sum = a + b;return sum;}

因为代码从上往下运行

,函数的使用要先声明再使用,在前面定义函数也是声明的一种

总结:

以上就是我分享的内容,后面我会慢慢的给各位小可爱讲解的