作者前言:
欢迎小可爱们前来借鉴我的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;}
因为代码从上往下运行
,函数的使用要先声明再使用,在前面定义函数也是声明的一种
总结:
以上就是我分享的内容,后面我会慢慢的给各位小可爱讲解的