c语言第二课------地基打牢,基础打紧,不可放弃

作者前言:

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

目录

变量的作用域和生命周期

常量

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

循环语句

函数
_________________________________________________

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

变量的作用域和生命周期

变量的作用域:

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

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

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

#include <stdio.h>
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 <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"

由双引号( Double Quote )引起来的一串字符称为字符串字面值( String Literal ),或者简称字符
串。
字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串
内容
下面我来演示
#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()计算的是空间大小,是计算所有的,就拿上面的来说,只计算数组里面所有元素的总空间大小

 转义字符

\?  在书写连续多个问号时使用,防止他们被解析成三字母词
\'  用于表示字符常量'
\“  用于表示一个字符串内部的双引号
\\  用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a  警告字符,蜂鸣
\b  退格符
\f  进纸符
\n  换行
\r  回车
\t  水平制表符
\v  垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130 X
\xdd dd表示2个十六进制数字。 如:\x30 0

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

下面我们来演示一下

#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

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

代码:

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

结果:
\xdd
dd 表示 2 个十六进制数字。 如: \x30 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;
}

因为代码从上往下运行

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

总结:

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

猜你喜欢

转载自blog.csdn.net/m0_69984273/article/details/131179122