回复 20楼 第二周杰伦
这涉及到代码规范的问题 如果我们编程的最大追求就是能运行 并且结果看起来好像是对的 这样就行了
那你现在用的操作系统 就不是偶尔担心他会不会死机的问题了
而是需要时刻提醒吊胆 我昨天刚存的文件 会不会第二天开机的时候就没了啊
函数参数*n 在设计上只是提供你一个存储数据个数的空间 并且希望你把统计好的数据存储到他提供给你的空间里
函数调用者只保证*n是确实可用的 除此之外 你不应该对函数调用者提出任何要求 诸如*n必须起始为0的要求
这是你自己写代码 也就几行 *n=0; 这句话加在哪儿无所谓 反正加上就行了
但是当你的函数是在工程的第5236个文件中定义 而调用是在第9762个文件的时候呢 或者你是工作在一个几百上千余人的开发团队呢
如果他们得知 在版本发布的前夜 系统大面积的爆发Bug 居然是由于未初始化给你的这个函数提供的指针所指向的内存的时候
他们应该是会想杀了你的 至少得揍一顿 因为这不应该是他们负责的事情
你在拷贝一个字符串的时候 strcpy(dst,src); 会需要小心翼翼的先把dst全部赋值为'\0'吗
关于return *n; 我只能说是他本身函数功能定义的有点模糊 既然通过*n返回个数 函数为什么还需要返回int
但是既然 函数功能设计了有int 的返回 那你就应该返回一个有意义的值 比如说*n
如果一个永远返回0的函数 你为什么不设计为void呢 编译器不支持?
这里删除return语句是违法语法规则的 因为你没有给一个有返回值得函数任何返回 你说返回0 和 返回*n没有区别
那是因为你的主函数中根本就没有用到函数的返回值 仅仅因为没有用到就可以无视函数的功能要求吗 不是的。
编程规范是大学计算机教育最迫切需要补上的一门大课。