作者前言:
欢迎小可爱们前来借鉴我的gtieehttps://gitee.com/qin-laoda
目录
这次我们接着上一篇博客,我们接着来继续C语言的学习
变量的作用域和生命周期
变量的作用域:
简单的说就是变量的作用范围,比如我们创建了一个全局变量,作用域就是整个程序
局部变量就是在某块地方或者某个函数内使用
下面我要代码简单的讲解一下
#include <stdio.h>
int b = 10;
int main()
{
int a = 20;
{
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超出了自己的作用范围,
变量的生命周期:
变量的生命周期就是指,从变量诞生到变量销毁的时间段(可以理解为人的出生到死亡的时间)
常量
分为四种
字面常量
45;
const修饰的常变量
代码一;
#include <stdio.h>
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 100
int main()
{
printf("%d", M);
return 0;
}
#define M 100
int main()
{
int arr[M] = { 1,2,3,4,5 };
return 0;
}
可以看出是常量
枚举常量
枚举:一一列举出来
比如RGB的三颜色 红 绿 蓝
代码:
#include <stdio.h>
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 <stdio.h>
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"
#include <stdio.h>
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 <string.h>
#include <stdio.h>
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,--------要引入头文件<string.h>
而前面的sizeof()计算的是空间大小,是计算所有的,就拿上面的来说,只计算数组里面所有元素的总空间大小
转义字符
转义字符简单的讲就是转变原来的意思
下面我们来演示一下
#include <stdio.h>
int main()
{
printf("c:\nfdf\tghg\dff");
return 0;
}
看看是不是和自己的想法有误啊,这就是存在了转义字符的干扰
注意一下啊 一个转义字符是一个字符哦哦
\? 这个转义字符现在已经无法显示出效果了我们可以了解一下 但是可以理解为打印输出?
\' 打印这个" ' "
下面我们来演示
#include <stdio.h>
int main()
{
printf("%c", '\'');
return 0;
}
\"这个转义字符是打印' " '
代码如下:
#include <stdio.h>
int main()
{
//printf("%c", '\'');
printf("%c", '\"');
return 0;
}
结果:
\a 蜂鸣声
\n换行符
\b退格符(删除前面一个字符再打印)
代码:
lude <stdio.h>
int main()
{
printf("ssf\bdff");
return 0;
}
结果:
\t 水平制表符
就是再\t前面的字符以四个为一组,不够就补上空格
下面的两个转义字符比较重要,
\ddd
代码:
#include <stdio.h>
int main()
{
printf("\\151对应的十进制为%d\n", '\151');
printf("\\151对应的ASCII值所对应的字符是%c\n", '\151');
return 0;
}
#include <stdio.h>
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 <stdio.h>
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");
else
printf("种红薯");
return 0;
}
switch现在先不写,后面我再来讲解
循环语句
for while do.....whlie
代码如下
#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
//函数的声明
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 <stdio.h>
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;
}
因为代码从上往下运行
,函数的使用要先声明再使用,在前面定义函数也是声明的一种
总结:
以上就是我分享的内容,后面我会慢慢的给各位小可爱讲解的