当前位置: 首页 > news >正文

网站建设知乎/百度官网入口

网站建设知乎,百度官网入口,沈阳妇科哪个医院看的比较好,南宁seo优化公司在《C语言形参和实参的区别》中提到,形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。这说明形参变量的作用域非常有限,只能在函数内部使用,离开该函数就无效了。所谓作用域(Scope),就是变量的有效范围…

在《C语言形参和实参的区别》中提到,形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。这说明形参变量的作用域非常有限,只能在函数内部使用,离开该函数就无效了。所谓作用域(Scope),就是变量的有效范围。

不仅对于形参变量,C语言中所有的变量都有自己的作用域。决定变量作用域的是变量的定义位置。

局部变量

定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。例如:

int f1(int a){

int b,c; //a,b,c仅在函数f1()内有效

return a+b+c;

}

int main(){

int m,n; //m,n仅在函数main()内有效

return 0;

}

几点说明:

1) 在 main 函数中定义的变量也是局部变量,只能在 main 函数中使用;同时,main 函数中也不能使用其它函数中定义的变量。main 函数也是一个函数,与其它函数地位平等。

2) 形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。

3) 可以在不同的函数中使用相同的变量名,它们表示不同的数据,分配不同的内存,互不干扰,也不会发生混淆。

4) 在语句块中也可定义变量,它的作用域只限于当前语句块。

全局变量

在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。例如:

int a, b; //全局变量

void func1(){

//TODO:

}

float x,y; //全局变量

int func2(){

//TODO:

}

int main(){

//TODO:

return 0;

}

a、b、x、y 都是在函数外部定义的全局变量。C语言代码是从前往后依次执行的,由于 x、y 定义在函数 func1() 之后,所以在 func1() 内无效;而 a、b 定义在源程序的开头,所以在 func1()、func2() 和 main() 内都有效。

局部变量和全局变量的综合示例

【示例1】输出变量的值:

#include

int n = 10; //全局变量

void func1(){

int n = 20; //局部变量

printf("func1 n: %d\n", n);

}

void func2(int n){

printf("func2 n: %d\n", n);

}

void func3(){

printf("func3 n: %d\n", n);

}

int main(){

int n = 30; //局部变量

func1();

func2(n);

func3();

//代码块由{}包围

{

int n = 40; //局部变量

printf("block n: %d\n", n);

}

printf("main n: %d\n", n);

return 0;

}

运行结果:

func1 n: 20

func2 n: 30

func3 n: 10

block n: 40

main n: 30

代码中虽然定义了多个同名变量 n,但它们的作用域不同,在内存中的位置(地址)也不同,所以是相互独立的变量,互不影响,不会产生重复定义(Redefinition)错误。

1) 对于 func1(),输出结果为 20,显然使用的是函数内部的 n,而不是外部的 n;func2() 也是相同的情况。

当全局变量和局部变量同名时,在局部范围内全局变量被“屏蔽”,不再起作用。或者说,变量的使用遵循就近原则,如果在当前作用域中存在同名变量,就不会向更大的作用域中去寻找变量。

2) func3() 输出 10,使用的是全局变量,因为在 func3() 函数中不存在局部变量 n,所以编译器只能到函数外部,也就是全局作用域中去寻找变量 n。

3) 由{ }包围的代码块也拥有独立的作用域,printf() 使用它自己内部的变量 n,输出 40。

4) C语言规定,只能从小的作用域向大的作用域中去寻找变量,而不能反过来,使用更小的作用域中的变量。对于 main() 函数,即使代码块中的 n 离输出语句更近,但它仍然会使用 main() 函数开头定义的 n,所以输出结果是 30。

【示例2】根据长方体的长宽高求它的体积以及三个面的面积。

#include

int s1, s2, s3; //面积

int vs(int a, int b, int c){

int v; //体积

v = a * b * c;

s1 = a * b;

s2 = b * c;

s3 = a * c;

return v;

}

int main(){

int v, length, width, height;

printf("Input length, width and height: ");

scanf("%d %d %d", &length, &width, &height);

v = vs(length, width, height);

printf("v=%d, s1=%d, s2=%d, s3=%d\n", v, s1, s2, s3);

return 0;

}

运行结果:

Input length, width and height: 10 20 30↙

v=6000, s1=200, s2=600, s3=300

根据题意,我们希望借助一个函数得到三个值:体积 v 以及三个面的面积 s1、s2、s3。遗憾的是,C语言中的函数只能有一个返回值,我们只能将其中的一份数据,也就是体积 v 放到返回值中,而将面积 s1、s2、s3 设置为全局变量。全局变量的作用域是整个程序,在函数 vs() 中修改 s1、s2、s3 的值,能够影响到包括 main() 在内的其它函数。

http://www.lbrq.cn/news/819811.html

相关文章:

  • 荆州网站建设 众火网/b2b国际贸易平台
  • wordpress文章全部随机排/百度seo优化包含哪几项
  • 邯郸哪有做网站的公司/外链seo
  • 昆明双鼎网站制作/重庆森林粤语
  • 网站建设工作方案/seo网站优化推广教程
  • 网站建设管理情况说明/网站设计服务企业
  • 美国做海关数据知名网站/个人对网络营销的看法
  • 做网站1万多/舆情通
  • 莱芜可信赖的网络推广公司/seo优化招商
  • java开发网站开发教程/网站seo分析工具
  • 智慧团建系统官方网站/中国外贸订单网
  • 裤子seo关键词/seo上海培训
  • 重庆网站建设公司/中国十大电商平台有哪些
  • 网站首页设计报价多少/seo网站首页推广
  • 中润建设集团有限公司网站群/友情链接赚钱
  • 哈尔滨seo网站排名/投诉百度最有效的电话
  • 在合肥做网站多少钱/百度软文推广公司
  • 做网站有2个前提条件 一个是网站/宁波正规优化seo公司
  • java开发企业网站开发文档6/临沂seo整站优化厂家
  • 商业广告公司排名/百度关键词优化怎么做
  • 系统网站怎么做的/杭州seo推广优化公司
  • 网站顶部固定怎么做/中国万网域名注册服务内容
  • 西安创意网站建设/深圳网络推广建站
  • 公司品牌flash网站设计/seo专员的工作内容
  • 上海微网站/枣庄网站建设制作
  • vs2010做网站登陆界面/nba最新交易信息
  • 网站的链接要怎么做/百度推广后台登陆首页
  • 芜湖市住房和城乡建设委员会网站/优化人员配置
  • 怎么样创建自己的小程序/英文外链seo兼职在哪里找
  • 深圳模板网站制作/竞价推广员月挣多少
  • 调节广告adload的算法:Contextual Bandits、多臂老虎机 Policy Gradient、Q-learning
  • Linux权限机制:设计哲学、实现原理与安全实践
  • Java函数式编程深度解析:从基础到高阶应用
  • 双指针算法介绍及使用(上)
  • 《Linux 环境下 Nginx 多站点综合实践:域名解析、访问控制与 HTTPS 加密部署》​
  • 【qml-3】qml与c++交互第二次尝试(类型方式)