初识C语言(二)

本文介绍了C语言中的库函数scanf和printf,它们分别用于数据输入和输出。文章详细阐述了变量的作用域和生命周期,包括局部变量和全局变量的区别。此外,还讨论了常量的类型,如字面常量、const修饰的变量和枚举常量,强调了const变量的常属性和枚举在定义特定类型时的用途。
摘要由CSDN通过智能技术生成

scanf函数、printf函数都是库函数,都可以直接使用。

库函数——C语言的编译器所提供的现成的函数,可以直接使用。

scanf函数的作用是输入数据,数据从键盘读取到内存去,printf函数的作用是将数据从内存打印到屏幕上。

scanf函数

 

输入的格式表示你从键盘输入的东西的格式,这里指的是以十进制的格式打印,如果你输入的格式和程序所打印的格式不同,那就会打印出错。这里要记住,%c适用于字符,%d适用于整型,%s适用于字符串,%f适用于float类型,%lf适用于double类型,%p适用于地址的打印。当然你也可以同时使用多个%d之类的,当然后面的地址就需要一一对应好。

变量的作用域和生命周期

作用域

作用域是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的而限定这个名字的可能性的代码范围就是这个名字的作用域。

1.局部变量的作用域是变量所在的局部范围。

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

 

 

 对比上面两张图,大家可以明确的感受到变量使用的方法,以及作用域的概念,第二张图大家得以看到,a变量处于一对括号内部,而大括号外部的printf函数想要输出a,但是报错了,可见a的作用域仅限于包含a大括号内,外部的函数是用不了的,如果你执行程序,就会显示a未定义。

来比较一下这张图和第一张图,看看a的作用域范围,如果你的答案是main函数范围和包含a,printf函数的大括号范围,那么,恭喜你,你已经明白了局部变量的概念。

 全局变量,顾名思义就是整个程序都可以使用的变量,像上图的a变量,我们定义了了一个test函数,并且在main函数中调用了test函数,都可以使用a变量,其实道理和局部变量都差不了多少。

其实当语法合适的情况下 ,我们还可以再创建一个源文件,并且在这个源文件里定义变量并在原来的源文件里使用。

 

但是记住,当你想要使用这个外部变量时,你必须声明变量, 

使用extern声明外部变量,这样就可以使用了。

生命周期 

作用域限制的是可以在哪里使用,而生命周期限制的是什么时候可以使用。

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

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

来看看这张图,从main函数开始下面的第二个大括号开始,变量a,b,c生命周期开始,当到第三个大括号出去之后,就结束了,它们的生命周期仅限于此。

可能你们能听懂但是还不够了解生命周期,那我们来说说变量创建,变量创建的本质就是在内存中开辟一块空间,用来存放数据,当它创建后,在其生命周期结束之后,就会销毁,这里的销毁并不是直接把这个变量给删了,没了,而是把它所占用的空间还给了操作系统。所以当变量出了其的作用域 ,操作系统就会为了节省空间,就会销毁变量,这样,变量的生命周期就结束了。

全局变量的作用域是整个程序,因此,整个程序的任何一个位置都有可能使用它,所以它的生命周期就是程序的生命周期。

常量

 字面常量就是直接写出来的常量,就像是3、3.14之类的。

const常变量,这指的是一个变量加了const修饰,这里来介绍一下const,由const修饰的变量不能改变。

 但是呢,这里的a是具有常属性的,不能被改变,但其实本质还是变量

这里来一个数组来举例,虽然我们使用了const来修饰变量来使a有了常属性,但是还是没办法用于数组,可见其本质还是变量。 

#define可以定义标识符

#define可以定义标识符,那么他也可以定义标识符为常量。

 还是来用数组举例,这里就可以成功使用,当然#define也可以用来定义其他的东西,比如说用定义一个字符。

 枚举常量

 枚举的意思其实就是一一列举的意思,为什么要有枚举呢,因为我们生活中有的东西是可以一一列举的,比如性别,血型,三原色。

这时候C语言就引进了枚举类型,叫enum,他可以让我们具体的定义一种类型。

格式:enum 名字{   枚举类型的取值     };

enum sex{

male,female,secret 

};

记住你可以更改枚举常量的初始值,但是你改完之后,在其他地方是无法更改的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值