编程之旅第一章之初识C语言----一遍了解“变常字转注“

Posted 海草的漂流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程之旅第一章之初识C语言----一遍了解“变常字转注“相关的知识,希望对你有一定的参考价值。

目录

前言

1.变量、常量

1.1定义变量的方法

1.2变量的分类

1.3变量的使用

1.4变量的作用域和生命周期

1.5常量

2.字符串、转义字符、注释

2.1字符串

2.2转义字符

2.3注释


前言

周三周四每天满课,今天终于有时间写博客了。那就继续带大家一起初识C语言。上次讲了数据类型(没看过的可以点这里:上一次内容),好了,让我们继续下面的内容吧。


1.变量、常量

生活中有一些值是不变的,比如血型、性别(有争议)、出生日期等。

有一些值是可变的,比如年龄、薪资、成绩等。

C语言中用常量的概念来表示不变的值,用变量的概念来表示可变的值。

1.1定义变量的方法

变量怎么定义呢?

很简单,直接 类型 + 变量名 就可以了

int age = 20;
float weight = 57.5f;
char ch = 'w';

这里要注意的是当我们在定义一个变量的时候,一定要给变量初始化。

首先,创建变量不初始化是种不好的代码风格

其次,当一个局部变量不初始化的时候它的值是随机的。

再者,创建变量不初始化的变量在很多编译器里是无法运行的。

1.2变量的分类

C语言中的变量分为局部变量和全局变量。

那什么是局部变量?什么是全局变量呢?

很简单,C语言中,一个 { } 就是一个代码块,在代码块内部定义的变量就是局部变量,在代码块外部定义的变量就是全局变量。说出来好像不太能想象得到,直接上图

int a = 3;//全局变量 
int main()
{   
    int a = 2;//局部变量
    printf("%d\\n", a);
    return 0;
}

在这里就会有小伙伴有疑问了:你这里局部变量名字是a,全局变量名字也是a,那printf打印的到底是谁呢?口说无凭,让我们运行一下代码

 所以我们可以得到一个结论:局部变量和全局变量名字发生冲突时,局部变量优先。

1.3变量的使用

知道了变量的定义和分类,那么当你需要一个变量的时候怎么去创建呢?

给大家举个栗子:实现两个整数的相加

#include <stdio.h>                //标准输入输出头文件
int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	printf("请输入两个整数的值:");
	scanf("%d %d", &num1, &num2);//scanf是C语言提供的输入函数 
	sum = num1 + num2;           //&----取地址
	printf("sum = %d\\n", sum);
	return 0;
}

 既然说到scanf了就再给大家说一个知识点,当我们写程序时只要遇到 printf/scanf 就需要加上#include <stdio.h> 这一头文件。其中 std 是 standard(标准)的缩写,i 是 input(输入)的缩写,o 是 output(输出) 的缩写。所以 stdio 就是标准输入输出的意思。

1.4变量的作用域和生命周期

作用域的概念:

作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的

而限定这个名字的可用性的代码范围就是这个名字的作用域。

局部变量的作用域是变量所在的局部范围,也就是局部变量所处的大括号内。

全局变量的作用域是整个工程。

给大家上个图:

#include <stdio.h>
int c = 100;//全局变量
int main()
{
	int a = 10;//局部变量
	{
		int b = 30;//局部变量
		printf("%d\\n", a);//可打印
		printf("%d\\n", b);//可打印
		printf("%d\\n", c);//可打印
	}
	printf("%d\\n", a);//可打印
	printf("%d\\n", b);//不可打印
	printf("%d\\n", c);//可打印
	return 0;
}

 在图中已经表明了哪些可以打印,哪些不可打印,大家有兴趣可以下去自己试一下。希望这个图能帮大家加深一下对变量作用域的理解。

生物从出生到死亡为一个生命周期,变量也有自己的生命周期:

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束.

全局变量的生命周期是:整个程序的生命周期。

上图:

#include <stdio.h>
int a = 100;
int main()
{
	{
		int b = 50;
		printf("%d\\n", a);//可打印
		printf("%d\\n", b);//可打印
	}
	printf("%d\\n", a);//可打印
	printf("%d\\n", b);//不可打印
	return 0;
}

这下,大家应该对作用域和生命周期的概念有了大概了解。

作用域描述的是一个范围,生命周期描述的是一个时间段,两者有一定关系,但是意义不同,希望大家不要混淆。

1.5常量

C语言中的常量分为一下几种:

①字面常量

const 修饰的常变量

#define 定义的标识符常量

④枚举常量

字面常量即我们敲代码时能够直接敲出来的常量就叫字面常量。比如

int main()
{
	100;
	3.14;
	"abc";
	'w'; 
	return 0;
}

  const 修饰的常变量指的是我们用 const 来定义一个变量,使变量中的数据不可以被修改。即定义变量是“常量”类型,使其具备某种“常”属性,但其本质还是变量。举个栗子:

此时 ,a 还是可变的,那让我们加上一个 const 再看看结果         

      

可以看到,加上一个 const ,a就不可以被修改了。未来我们敲代码时,当有一个变量我们不想它被修改的话,那就可以给它加上一个 const。

#define 定义标识符常量的用法很简单,就是 #define + 标识符 + 常量就可以了,给大家演示一下:

这里要提醒一下,一般情况下 #define 后边跟的标识符习惯使用大写,这是程序员之间的一种约定俗成的写法。

接下来就到了枚举变量,先说一下枚举变量的用法:

enum + 枚举类型名 + {常量1,常量2,常量3...};

例如定义人类性别(男、女、保密)的枚举常量:

enum Sex
{
	MALE,
	FEMALE,
	SECRET
};

我们这里知识带大家简单认识一下枚举常量,以后会详细给大家解释,大家有兴趣也可以自行打印一下这三个数的值。

2.字符串、转义字符、注释

上面给大家介绍了变量、常量的相关知识,那么接下来就给大家介绍一下字符串、转义字符以及注释的知识。

2.1字符串

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

C语言中时没有字符串类型的,C语言中描述字符串的方法就是用双引号引起来。先给大家简单讲解下:

int main()
{   //存储字符串时可以将字符串存放在字符数组中
	char ch = "abc";//错误:不可以这样存放字符串,char ch 只能存放一个字符
	char arr1[] = "abc";//正确
	char arr2[] = { 'a', 'b', 'c' };//正确
	return 0;
}

知道了字符串的用法,那我们来试一下两个写法打印出的结果是否一样:

咦,结果居然不一样耶! 为什么呢,让我们打开监视器看看原因(小伙伴们一定要学会使用监视器嗷,这能帮助我们发现问题的根源),下边放一下VS版本监视器的调用方法:

 打开监视器,输入 arr1 , arr2 ,走一下 :

 这下是不是就一目了然了,这就提到了我们刚开始讲的,字符串的结束标志是一个 \\0 的转义字符。字符串的末尾其实隐藏了一个 \\0 ,而arr2后边因为没有 \\0 所以它只能一直往后胡乱打印,直到遇到 \\0 。那我们在 arr2 后边加上一个 \\0 不久ok了吗?让我们一起来试一下:

 果然,加上一个 \\0 后,腰不酸了,腿不疼了,直接就把 abc 打印了。

2.2转义字符

转义字符是C语言中表示字符的一种特殊形式。转义字符以 '\\' 开头,后面跟一个字符或一个八进制或十六进制数表示。转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。

转义字符中的 '\\' 表示它后面的字符已经失去它原来的意义,转变成另外的特定含义。比如我们常用的 \\n ,字符 n 前面加上一个 \\ 就成了换行的意思。

下面为大家放上一个转义字符表供大家参考:

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

下边为大家做个演示,比如要在屏幕上打印一个 " ,打印一个 \\ ,该怎么做呢?很简单

2.3注释

注释有什么用呢?第一个用处给代码一个解释和说明,方便其他人理解我们写的代码。第二个作用就是给暂时不需要的代码加上注释,注释并不影响代码程序的编译,等需要时再取消注释。

C语言的注释方式有两种:

/*xxxxxx*/

缺陷:不能嵌套注释。

//xxxxxxxx

可以注释一行也可以注释多行。

给大家演示下:

 讲到这,大家应该对注释有了一定了解。

这次的内容终于写完了,内容比较基础,希望对大家有所帮助,如果有错误,欢迎大家帮忙指正。我的qq:776717438,大家可以一起交流学习哇。谢谢大家的支持。下期见~

以上是关于编程之旅第一章之初识C语言----一遍了解“变常字转注“的主要内容,如果未能解决你的问题,请参考以下文章

读书笔记《编程珠玑》第一章之位向量&位图

Python学习之旅--第一周--初识Python

初识Python第一章

第一章之三大结构

大话设计模式第一章之简单工厂模式

第一章:初识java