c语言进阶2-变量的作用域与无参函数
一、 什么是函数
函数是具有特定功能的模块。可以说一个完整的程序其实是由多个函数共同完成的。C语言的全部工作都是由程式各样的函数完成的,所以也把C语言称为函数式语言。使用模块化设计可能 使程序的层次结构清晰,全球程序的编写、阅读、调试。
二、 函数的分类
就像你一样,说你从性别的角度分属于男还是女?如果从肤色的角度分你是属于黄种人还是白种人?如果从高低的角度分你是属于高的,还是低的呢?所以说同一类事物可以从不同的角度进行分类。函数也是一样从定义的角度分为库函数和自定义函数、从传递参数的角度分为有参函数与无参函数、从返回值的角度分为有返回值函数与无返回值函数。各种函数的区分请参照如下:
- 1. 库函数:系统已经定义好的函数,可以直接使用。如strlen,strcmp等
- 2. 自定义函数:根据需要手动所写的函数。
- 3. 有参函数:函数头后的括号里有内容的函数。
- 4. 无参函数:函数头后括号里无内容的函数。
- 5. 返回值函数:函数最后有return语句的函数。
- 6. 无返回值函数:函数里没有return语句的函数。
三、 变量的应用
变量的有效作用范围称为变量的作用域。按照有效作用范围可以把变量分为全局变量和局部变量两种。
- 1. 全局变量
全局变量是在函数外部定义的变量,也称全程变量,或外部变量。全局变量的作用域是从变量定义的位置开始,到所在源文件结束。全局变量的操作范围,属于其定义所在的源程序文件中。如下图所示:
如上图所示a、b、x、y、m、n这六个变量作用不同,所以如果用全局变量,那么我们最好使用a、b这两个变量定义时的方法,写在所有函数的上头。
- 2. 局部变量
局部变量也称为内部变量,指在函数内部定义的变量。或一对花括号“{}”里的变量,只在其定义的范围内起作用,范围之外无法访问。
举例:
void fun(int a,int b) { int x,y; }
其中变量a、b、x、y都是局部变量,作用范围就是函数fun内。
四、 函数思维
通过下面程序段我们来看下函数思维的过程,以及函数的定义和使用过程。
/* Note:Your choice is C IDE */ #include "stdio.h" void check(int a);//声明函数 void main() { int num; printf("请输入一个数:"); scanf("%d",&num); check(num); } void check(int a) // 形参 { if(a%==&&a%==) //与 且 都 并且 printf("%d是3与4的倍数\n",num); //一名话可加可不加{} else printf("%d不是3与4的倍数\n",num); }
注意:参数传递
1:只能实参传给形参
2:参数之间用逗号隔开
3:传递时个数要一致,类型要一致
- 1. 函数的说明
在全局上自定义函数应该在主函数之前有一个说明,目的是告诉系统在主函数中要用到一个自定义函数,被主函数直接调用或间接调用。说明的时候就要写清楚这个函数的数据类型是什么,自变量有几个,都是什么数据类型的。
如:语句 void check(int a);
声明方式是:函数头+;
- 2. 无参无返回值函数的定义
函数的定义的格式为:
void 函数名( )
{
说明部分;
语句部分;
}
- 3. 函数的调用
无参无返回函数的调用格式是通过函数名来调用的.
无参函数的调用格式为:函数名();
- 4. 扩展内容:形式参数和实在参数
针对案例当中需要我们理解形式参数与实在参数说明如下:
(1) 形式参数是在定义函数时放在函数名称之后的括号中的参数。在函数未被调用时,系统不对形式参数分配内存单元。在函数被调用时,系统会立刻给形式参数分配内存单元;调用结束后,再释放掉形式参数所占有的内存单元。因此,形式参数属于局部变量,其作用域限定在它所在的函数体内。这就不难理解在定义函数时为什么要指定形参变量的数据类型了。
(2) 实在参数是一个具有确定值的表达式。函数在调用时,要将实在参数赋给形参变量。比如代码中if(check(num)==1)调用子函数,这时num为实在参数,在这之前变量num是被赋过具体值的。在函数被调用后,系统会把num的值赋给形式参数a.
注:实在参数的个数及类型应与形式参数一致,赋值时多个参数之间的前后对应关系不变。
心形代码
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "stdlib.h"
#include "windows.h"
int i,j;
void gotoxy(int x,int y);
int color(int c);
void xin(){
color();
gotoxy(,);
printf("■");//8行28列
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
Sleep();
gotoxy(,);
printf("■");
for(i=;i<;i++){
gotoxy(,i);
printf("■");
}
for(i=;i<;i++){ gotoxy(,i);
printf("■");
}
for(i=;i<;i++){ gotoxy(,i);
printf("■");
}
for(i=;i<;i++){
gotoxy(,i);
printf("■");
}
for(i=;i<;i++){
gotoxy(,i);
printf("■");
}
for(i=;i<;i++){
gotoxy(,i);
printf("■");
}
for(i=;i<;i++){
gotoxy(,i);
printf("■");
}
}
void menu(){
for(i=;i<;i+=){
gotoxy(i,);
color();
printf("□");
gotoxy(i,);
printf("□");
}
for(i=;i<;i++){
gotoxy(,i);
printf("□");
gotoxy(,i);
printf("□");
}
for(i=;i<;i+=){
for(j=;j<;j++){
gotoxy(i,j);
color();
printf("■");
}
}
}
void people(){
color();
for(i=;i<;i++){
gotoxy(,i);
printf("■");
}
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
/*gotoxy(36,13);
printf("■");*/
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
/*gotoxy(36,17);
printf("■");*/
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
//y
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■");
gotoxy(,);
printf("■"); }
void gotoxy(int x,int y){
COORD c;
c.X=x;
c.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
int color(int c){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);
return ;
}
void main()
{ system ( "mode con cols=60 lines=28" );
system("title 原来是因为");
menu();
gotoxy(,);
system("pause");
xin();
for(i=;i>=;i--){
Sleep(); gotoxy(,i);
color();
printf("■");
gotoxy(,i+);
color();
printf("■"); }
/*system("cls");*/
/*menu();*/
people(); gotoxy(,);
system("pause");
}
c语言进阶2-变量的作用域与无参函数的更多相关文章
- C语言基础之变量、作用域
1.变量的定义 变量类型 变量名; int score; 2.变量的赋值 score = 100; score = a; score = b = 100; 3.变量的输出 int a = 200; p ...
- C语言进阶_变量属性
人们总说时间会改变一些,但实际上这一切还得你自己来. 一.概念详解 变量:计算机语言中储存计算结果,其值可以被修改.通过变量名来访问计算机中一段连续的内存空间. 属性:区别于同类事物的特征. C语言中 ...
- R语言学习笔记-变量的作用域
R语言是如何将变量值和变量绑定的 在r语言中,当前的 workspace就是global enviroment,当输入变量名时,首先会在global enviroment中搜索该变量,如有,则将它显示 ...
- C语言 变量的作用域和生命周期(转)
转自 https://blog.csdn.net/u011616739/article/details/62052179 a.普通局部变量 属于某个{},在{}外部不能使用此变量,在{}内部是可以使用 ...
- C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期
全局变量 作用域:全局作用域(全局变量只需在一个源文件中定义,就可以作用于所有的源文件.) 生命周期:程序运行期一直存在 引用方法:其他文件中要使用必须用extern 关键字声明要引用的全局变量. 内 ...
- C语言的变量的作用域和生存期
一.c程序存储空间布局 C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)——在 ...
- C语言中变量的作用域和生命周期
变量的类型: 1. 局部变量和全局变量 局部变量也称为内部变量. 局部变量是在函数内作定义说明的.其作用域仅限于函数内, 离开该函数后再 使用这种变量是非法的. 全局变量也称为外部变量,它是在函数外部 ...
- C语言变量的作用域和存储类型
1.动态局部变量:也称局部变量.自动变量,是指在函数内部定义的自动变量,不带static修饰,作用域是定义该变量的子程序.在退出函数后,变量自带内存会自动释放. 2.静态局部变量:是指在函数内部定义的 ...
- C语言中变量、全局变量与变量的作用域
什么是变量: 变量常量都是表征数据的一种形式:常量用来表示数据的值: 变量不仅可以用来表示数据的值:还可以用来存放数据:因为变量对应着一定的内存单元: 变量和常量必须先定义后使用. 变量名和常量名都是 ...
随机推荐
- 使用WebBrowser并调用网页中的JS函数
在界面上拖入QAxWidget,注意这里不建议直接在UI设计界面指定控件,否则可能引起QtCreator崩溃 建议在代码中动态设置,如: ui->axWidget->setControl( ...
- Qt+QZXing编写识别二维码的程序
本人最近在用Qt编写程序,需要用编写二维码识别功能.在网上搜寻一番,找到了QZXing.配置过程中确实出了一大把汗,这里我写这篇文章记录配置方法,替后人省一把汗吧!我的开发环境:MSVC2010 + ...
- c#透明panel
先看下效果 纯透明的pane,然后设置一个半透明的图片,可以看出来显示了父控件的button 看代码 public partial class PanelEx : Panel { protected ...
- qt 心跳设计
网络通信中的心跳设计是为了判断客户端和服务器通信是socket是否处于连接状态,服务端每隔一个固定的时间间隔给客户端放消息,客户端设计一个心跳类,类中有一个定时器,当socket接收到信息时,心跳类记 ...
- std::string的Copy-on-Write:不如想象中美好(VC不使用这种方式,而使用对小字符串更友好的SSO实现)
Copy-on-write(以下简称COW)是一种很重要的优化手段.它的核心思想是懒惰处理多个实体的资源请求,在多个实体之间共享某些资源,直到有实体需要对资源进行修改时,才真正为该实体分配私有的资源. ...
- CS代码代写, 程序代写, java代写, python代写, c/c++代写,csdaixie,daixie,作业代写,代写
互联网一线工程师程序代写 微信联系 当天完成特色: 互联网一线工程师 24-48小时完成.用心代写/辅导/帮助客户CS作业. 客户反馈与评价 服务质量:保证honor code,代码原创.参考课程sl ...
- mongodb批量更新操作文档的数组键
persons文档的数据如下: > db.persons.find(){ "_id" : 2, "name" : 2 }{ "_id" ...
- __file__、__name__、__dict__方法整理
本文主要介绍__file__.__name__.__dict__三个方法的作用. #01 __file__:打印当前文件的位置. # import os # print(__file__) # 在py ...
- 视频编解码的理论和实践2:Ffmpeg视频编解码
近几年,视频编解码技术在理论及应用方面都取得了重大的进展,越来越多的人想要了解编解码技术.因此,网易云信研发工程师为大家进行了归纳梳理,从理论及实践两个方面简单介绍视频编解码技术. 相关阅读推荐 &l ...
- Java:HashMap原理与设计缘由
前言 Java中使用最多的数据结构基本就是ArrayList和HashMap,HashMap的原理也常常出现在各种面试题中,本文就HashMap的设计与设计缘由作出一一讲解,并解答面试常见的一些问题. ...