免费注册 查看新帖 |

Chinaunix

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

[C] C语言函数返回值为 const 型 , 有什么意义 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-31 11:32 |只看该作者 |倒序浏览

  1. const int foo()
  2. {
  3.        return 3;
  4. }
  5. int i = foo();
复制代码

保存为 .C 文件
请问此处的 const  有什么意义没有?
我用gcc 3.4 加 -Wall 参数编译,没有任何warning和error。用 g++ 编译,也没有问题
如果是C++,这样定义一个函数有没有与 C 不同的意义?

论坛徽章:
0
2 [报告]
发表于 2007-05-31 11:34 |只看该作者
gcc 4.12編譯有警告。

论坛徽章:
0
3 [报告]
发表于 2007-05-31 11:41 |只看该作者
谢谢 福瑞哈哥,其实我也想用 Gcc 4.xx 测试的,但实在找不到环境。
是类型转换的警告吗
如果这样
int i = const_cast<int>foo();

int i = (int)foo();

const int i = foo();
是不是可以消除这个警告?相烦再给测试一下,:)

论坛徽章:
0
4 [报告]
发表于 2007-05-31 11:55 |只看该作者

  1. const int foo()
  2. {
  3.         return 3;
  4. }

  5. int        main(int argc,char*argv[])
  6. {
  7.         int i=foo();
  8.         i=2;
  9.         return 0;
  10. }
复制代码

gcc -Wall foo.c

  1. foo.c:4: warning: type qualifiers ignored on function return type
复制代码

论坛徽章:
0
5 [报告]
发表于 2007-05-31 12:24 |只看该作者
原帖由 windaoo 于 2007-5-31 11:41 发表
const int i = foo();

還是會警告。

论坛徽章:
0
6 [报告]
发表于 2007-05-31 12:41 |只看该作者
谢谢你们,
有空时我用 gcc4 试一下,


除了处理返回为指针和引用,并把函数做为左值的情况,这个加在返回类型上的 const 还有什么其它的意义了呢?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2007-05-31 13:10 |只看该作者
原帖由 windaoo 于 2007-5-31 11:32 发表

  1. const int foo()
  2. {
  3.        return 3;
  4. }
  5. int i = foo();
复制代码

保存为 .C 文件
请问此处的 const  有什么意义没有?
我用gcc 3.4 加 -Wall 参数编译,没有任何warning和error。用 g++ 编译,也没 ...

建议还是不要把 C++ 和 C 放在一起考虑。要比较也得等到对两者了解的都差不多了再说。

论坛徽章:
0
8 [报告]
发表于 2007-05-31 17:14 |只看该作者
原帖由 MMMIX 于 2007-5-31 13:10 发表

建议还是不要把 C++ 和 C 放在一起考虑。要比较也得等到对两者了解的都差不多了再说。


好吧,接受你的建议.
的确还不了解C和C++

论坛徽章:
0
9 [报告]
发表于 2007-06-01 10:14 |只看该作者
原帖由 book11 于 2007-5-31 11:55 发表

  1. const int foo()
  2. {
  3.         return 3;
  4. }

  5. int        main(int argc,char*argv[])
  6. {
  7.         int i=foo();
  8.         i=2;
  9.         return 0;
  10. }
复制代码

gcc -Wall foo.c
[code]
foo.c:4: warning: type qualifiers ignored on f ...

gcc的警告不是很清楚了吗?
函数返回值前面的const之类的qualifiers会被忽略

论坛徽章:
0
10 [报告]
发表于 2007-06-02 18:20 |只看该作者
防止对其值的修改!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP