免费注册 查看新帖 |

Chinaunix

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

字符串的一点看法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-14 12:31 |只看该作者 |倒序浏览
看见很多人讨论字符串的问题,我也来啰嗦一下我的想法。
char ch[5];
...
ch[4]='\0';
...
很多人认为上面这一行是很傻的代码。为什么要加入这一行呢。

编写程序是为了控制电脑,你要控制电脑,你就要给他一个明确的指令,在很多语言中有字符串string这个类型,他是类库来实现的。为什么这么说呢。int,char等等,这些类型就是告诉电脑一个明确的指令,他们的长度是固定的(在软硬件确定的情况下),但是字符串是变长的,不知道他的具体长度,没有明确的指令,它就不知道怎么做了,要知道我们所有的指令都是在明确的存储空间中,字符串是变长的,那么怎么给他分配存储空间呢,不知道则么分配,那么电脑就不知道怎么工作了,我们加上这一行实际上是明确地指出字符串的有效长度,由字符ch[0]开始,到遇上'\0'为止,这一段就是一个字符串的有效长度。
认为上面代码有些傻的,从另一方面来看也是很自然的,因为平时可以直接使用字符串这种类型的变量,只不过这种东西的背后有类库帮你做了很多事情。就像今天我们编写好了源代码,编译好后就能在电脑上运行了。实际上很多工具在背后做了很多事情,比如链接器,装载器等等,这样不是说我们写代码要从头开始写这些工具,但是要知道我们写的这些代码最终是怎么跑起来的。最起码应该知道一个大概吧。

一个朋友公司招人,应聘的人说自己做了很多项目,问他一个基本的问题,有没有自己写过链表,他说没有,也不用,stl里面什么都有。问他什么地方应该使用链表呢,他说平时基本上不用这个东西,我无言。

论坛徽章:
0
2 [报告]
发表于 2007-07-14 12:39 |只看该作者
建议还是不要发没必要的罗嗦,读多些看多些,做些实事为好

论坛徽章:
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
3 [报告]
发表于 2007-07-14 13:36 |只看该作者
原帖由 hao951456 于 2007-7-14 12:31 发表
看见很多人讨论字符串的问题,我也来啰嗦一下我的想法。
char ch[5];
...
ch[4]='\0';
...
很多人认为上面这一行是很傻的代码。为什么要加入这一行呢。

编写程序是为了控制电脑,你要控制电脑,你就要给 ...

发议论之前还是先仔细看看别人在说什么为好。没人说过 ch[4] = '\0'; 傻或者多余,而是说 ch[strlen(ch)] = '\0'; 傻或多余,这两个完全是两回事。

论坛徽章:
0
4 [报告]
发表于 2007-07-14 18:09 |只看该作者
猜,lz是从java/C++转去做C的,而且时间不会超过2年~~

论坛徽章:
0
5 [报告]
发表于 2007-07-14 22:04 |只看该作者
这就是一个菜鸟对字符串的一点看法,呵呵

论坛徽章:
0
6 [报告]
发表于 2007-07-14 23:32 |只看该作者
原帖由 MMMIX 于 2007-7-14 13:36 发表

发议论之前还是先仔细看看别人在说什么为好。没人说过 ch[4] = '\0'; 傻或者多余,而是说 ch[strlen(ch)] = '\0'; 傻或多余,这两个完全是两回事。

这个完全同意,我觉得ch[4] = '\0',这个是必需的,在使用了类似于strncpy之类的函数之后更是不能没有的。

论坛徽章:
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-07-15 00:35 |只看该作者
原帖由 cugb_cat 于 2007-7-14 23:32 发表

这个完全同意,我觉得ch[4] = '\0',这个是必需的,在使用了类似于strncpy之类的函数之后更是不能没有的。

对头,但许多人往往把这些都混起来了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP