免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8082 | 回复: 13
打印 上一主题 下一主题

函数形参作用域和函数中局部变量的作用域一样吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-01 10:37 |只看该作者 |倒序浏览
定义函数时,其形参的作用域和函数中局部变量的作用域一样吗?
void test(int param) {
    int param = 10;
}
以上函数中,形参的作用域和局部变量param的作用域一样吗?

论坛徽章:
0
2 [报告]
发表于 2012-06-01 10:41 |只看该作者
我觉得函数形参的作用域从小括号的位置就开始了,而局部变量的作用域是从第一个花括号开始的

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
3 [报告]
发表于 2012-06-01 10:44 |只看该作者
hongshaohu 发表于 2012-06-01 10:41
我觉得函数形参的作用域从小括号的位置就开始了,而局部变量的作用域是从第一个花括号开始的


不对,你考虑没考虑过:
1)小括号之前有空格的情况?这个作用域就是从空格开始了
2)花括号前边有换行符的情况,这个作用域就是从换行符开始了

论坛徽章:
0
4 [报告]
发表于 2012-06-01 10:54 |只看该作者
回复 3# 塑料袋
我觉得你第一条说的不对,变量的作用域是从声明变量的地方开始的。形参前有空格,说明形参在空格之后,所以形参的作用域不是从它前面的第一个小括号之后就开始的。


我现在的问题是:形参和局部变量的作用域是一样的吗?
我认为它们的作用域不一样,但是定义一个和形参同名的变量却编译错误,说明它们的作用域还是相同的。

论坛徽章:
0
5 [报告]
发表于 2012-06-01 10:58 |只看该作者
回复 1# hongshaohu

1)你所举的函数例子会发生重定义错误
2)传值参数与局部变量 作用域都在函数的生存期内
   

论坛徽章:
0
6 [报告]
发表于 2012-06-01 10:59 |只看该作者
我觉得就是一样的。

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
7 [报告]
发表于 2012-06-01 11:07 |只看该作者
hongshaohu 发表于 2012-06-01 10:54
回复 3# 塑料袋
我觉得你第一条说的不对,变量的作用域是从声明变量的地方开始的。形参前有空格,说明形参在空格之后,所以形参的作用域不是从它前面的第一个小括号之后就开始的。
...


这句话完全看不懂

论坛徽章:
0
8 [报告]
发表于 2012-06-01 11:10 |只看该作者
回复 7# 塑料袋


    我是说就算形参前有空格或者其他形参等等,形参的作用域还是从定义形参的那个地方就开始的。

论坛徽章:
6
寅虎
日期:2013-10-10 21:59:16狮子座
日期:2013-11-12 09:24:41金牛座
日期:2013-12-14 17:02:23酉鸡
日期:2014-01-16 12:34:37技术图书徽章
日期:2014-02-15 12:52:31巨蟹座
日期:2014-05-17 14:09:52
9 [报告]
发表于 2012-06-01 11:11 |只看该作者
若然论及作用域,我将它们都视为当前函数的局部变量。为啥要纠结这些无聊的问题呢。

论坛徽章:
0
10 [报告]
发表于 2012-06-01 11:12 |只看该作者
这也纠结吗?写代码试试就ok啦,不用死扣标准
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP