编程之旅第一章之初识C语言----一遍了解“变常字转注“
Posted 海草的漂流
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程之旅第一章之初识C语言----一遍了解“变常字转注“相关的知识,希望对你有一定的参考价值。
目录
前言
周三周四每天满课,今天终于有时间写博客了。那就继续带大家一起初识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 | 垂直制表符 |
\\ddd | ddd表示1~3个八进制的数字。 如: \\130 X |
\\xdd | dd表示2个十六进制数字。 如: \\x30 0 |
下边为大家做个演示,比如要在屏幕上打印一个 " ,打印一个 \\ ,该怎么做呢?很简单
2.3注释
注释有什么用呢?第一个用处给代码一个解释和说明,方便其他人理解我们写的代码。第二个作用就是给暂时不需要的代码加上注释,注释并不影响代码程序的编译,等需要时再取消注释。
C语言的注释方式有两种:
/*xxxxxx*/
缺陷:不能嵌套注释。
//xxxxxxxx
可以注释一行也可以注释多行。
给大家演示下:
讲到这,大家应该对注释有了一定了解。
这次的内容终于写完了,内容比较基础,希望对大家有所帮助,如果有错误,欢迎大家帮忙指正。我的qq:776717438,大家可以一起交流学习哇。谢谢大家的支持。下期见~
以上是关于编程之旅第一章之初识C语言----一遍了解“变常字转注“的主要内容,如果未能解决你的问题,请参考以下文章