形参改变实参的值不变(C语言基础知识加例题讲解)
来源:互联网 发布:java catch return 编辑:程序博客网 时间:2024/06/06 18:02
#include <stdio.h> fun(int x,int y) { static int m=0,i=2; i+=m+1;m=i+x+y;return m;}main(){ int j=1,m=1,k; k=fun(j,m);printf("%d,",k); k=fun(j,m);printf("%d\n",k);} 执行后的输出结果是( )。5,115,511,1111,5正确答案:A答疑:【解析】声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数fun中的变量 i和m均为静态局部变量。所以第一次调用fun函数,返回m的值为5,第二次再调用fun函数时,i的值为3,m的值已经是5了,所以执行i+=m+1,i的值变为9,m=i+x+y=9+1+1=11。
说明了,为什么C中能够说形参的值改变,不影响实参的值,在程序运行的过程中,身为形参的静态局部变量m的值随着程序的运行在一直的改变,但是实参的m值却是一直的没有改变一直是m=1;即形参的值改变不影响实参的值,不是为了说明,形参的值改变,调用函数进行计算出来的值不变,而是为了说明,形参和实参同名的情况下,改变形参的值实参的值不变。
34在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。auto和staticextern和registerauto和registerstatic和register正确答案:C答疑:【解析】auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。register:为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,这种变量叫"寄存器变量",只有局部自动变量和形式参数可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。
0 0
- 形参改变实参的值不变(C语言基础知识加例题讲解)
- 形参的数值改变不会改变实参的值
- JAVA里怎么样在调用方法时同时改变实参的值 (形参改变实参)
- c语言的一个问题 -关于怎么能改变实参
- C语言中用数组名作为参数能改变实参数组的值的理解
- C语言函数传递中形参的变化不会改变实参的值
- 参数传递---形参改变实参指针变量的值
- 形参的改变如何影响实参
- C语言形参和实参的陷阱
- C语言基础 实参与形参的类型一致
- C语言中函数调用、实参、形参的选择
- C语言的形参和实参个数不一致问题
- 8.3 C语言函数的形参和实参
- C语言形参和实参的收录
- C语言-实参到函数形参传递的理解
- C语言----函数的形参与实参
- C语言学习笔记(2)形参和实参
- C语言实参与形参
- 存储过程 计算 啤酒
- asp.net中常用的几种身份验证方式
- Struts2前台向后台传值方法
- Web.xml详解
- [翻译]<Web Scraping with Python>Chapter 2.高级HTML解析
- 形参改变实参的值不变(C语言基础知识加例题讲解)
- 事件模式与观察者模式
- Word Ladder II
- 常见的进程调度算法
- 欢迎使用CSDN-markdown编辑器
- 1073. Scientific Notation (20)
- PAT甲级练习1021. Deepest Root (25)
- Canny算子
- Shiro 之认证登录的dem