免费注册 查看新帖 |

Chinaunix

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

继续抓解毒专家的小辫子 -- 关于const [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-21 16:33 |只看该作者 |倒序浏览
不懂const的C专家你见过没?
不管你见没见过,我是见过了。

这是专家的代码
http://www.cnblogs.com/pmer/archive/2011/10/12/2209454.html

  1. char *month(unsigned);

  2. int main( void )
  3. {
  4.   puts( month(10) );
  5.   return 0;
  6. }

  7. char * month(unsigned m)
  8. {
  9.   static char * const name[12]
  10.   = {"Jan","Feb","Mar","Apr","May","Jun",
  11.      "Jul","Aug","Sep","Oct","Nov","Dec",};
  12.   return name[m-1];  
  13. }
复制代码
char * const name[12],看出问题没?
这里不加const,最多让人认为不够严谨。
加上const,就明显暴露无知了。

这里const修饰的name, 而非其中的"Jan", "Feb"这些数据。

修饰name几乎无用,这个样子下,const保护数据的效果没达到,例如做个破坏试验,
程序编译时检查不出问题,运行时,则可能立刻奔溃了。
  1. char *p = month(10);
  2. strcpy(p, "---");
  3. puts(month(10));
复制代码
正确的做法

  1. const char *month(unsigned m);

  2. int main( void )
  3. {
  4.   puts( month(10) );
  5.   return 0;
  6. }

  7. const char *month(unsigned m)
  8. {
  9.   static char const *name[12]
  10.   = {"Jan","Feb","Mar","Apr","May","Jun",
  11.      "Jul","Aug","Sep","Oct","Nov","Dec",};
  12.   return name[m-1];  
  13. }
复制代码

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
2 [报告]
发表于 2011-10-21 16:53 |只看该作者
本帖最后由 zylthinking 于 2011-10-21 16:56 编辑

没用的, 专家脸皮厚的很, 就以往经验看, 可观察到的处理方式有三条:
1。 看不到, 置之不理
2。 过来很诚恳的说声“谢谢, 是我考虑不周”-----于是, 抓辫子行为就被转换成善意指出了
3。 谩骂, 比如白痴, 精神病什么的----但聪明的是, 在明显被抓住把柄的时候, 这条是不考虑的

我们的诉求是什么, 不说别人的, 单说我自己的:
专家必须停止踩别人的肩膀向上爬的行为, 将别人当作垫脚石, 靠有根据或无根据的恶意理解来宣传拔高自己, 是卑鄙可耻的

论坛徽章:
0
3 [报告]
发表于 2011-10-21 17:04 |只看该作者
回复 2# zylthinking


    觉得在咱这些个人的悉心调教下,他会成为专家吗?

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
4 [报告]
发表于 2011-10-21 17:06 |只看该作者
回复  zylthinking


    觉得在咱这些个人的悉心调教下,他会成为专家吗?
AD8018 发表于 2011-10-21 17:04


无根据, 不做评论

论坛徽章:
0
5 [报告]
发表于 2011-10-21 17:10 |只看该作者
回复 4# zylthinking

这个,得观其行。。
专家果然应验了你的三条之一,继续观察中。。。

论坛徽章:
0
6 [报告]
发表于 2011-10-21 17:58 |只看该作者
2。 过来很诚恳的说声“谢谢, 是我考虑不周”-----于是, 抓辫子行为就被转换成善意指出了

如果能做得到这一点,那也算对得起专家的名号。

论坛徽章:
5
技术图书徽章
日期:2013-11-07 13:21:58技术图书徽章
日期:2013-12-07 10:34:46技术图书徽章
日期:2014-04-23 08:50:31双鱼座
日期:2014-09-16 09:12:34亥猪
日期:2015-01-23 13:37:49
7 [报告]
发表于 2011-10-21 18:13 |只看该作者
  光头不就没辫子了吗。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
8 [报告]
发表于 2011-10-21 18:34 |只看该作者
光头不就没辫子了吗。
nketc 发表于 2011-10-21 18:13


这个意思是不是说, 骂你是肯定你呢???

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
9 [报告]
发表于 2011-10-21 19:06 |只看该作者
2。 过来很诚恳的说声“谢谢, 是我考虑不周”-----于是, 抓辫子行为就被转换成善意指出了

如果能 ...
davelv 发表于 2011-10-21 17:58


如果真能很诚恳的做到感激指出其错误的人, 也就不会抓住或者根本不是抓住, 而是鸡蛋里找骨头的找到一个所谓错误, 然后说谭书怎么差怎么差了
比如这个 http://bbs.chinaunix.net/redirec ... 48&ptid=1686753, 这个我看来看去, 也没有看到什么地方有明显错误了, 非要从字缝里找所谓错误, 他妈的清朝文字狱早兴过了, 不是什么新发明

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
10 [报告]
发表于 2011-10-21 21:23 |只看该作者
本来不想回的,因为在帖子里吵完全是浪费时间,不过有点忍不住。

1.extern声明变量的时候要加类型,不要问我为什么。
2.defining declaration 和 referencing declaration的区别,不知道的自己搜。
3.将别人当作垫脚石, 靠有根据或无根据的恶意理解来宣传拔高自己, 是卑鄙可耻的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP