一些有意思的做法
感觉很难起标题,想表达的意思是:因为比较笨,很多想不到的技巧就在这里积累一下。
差不多就是这么个意思。以下就开始正文部分啦~
###关于末尾不要的逗号
之前写程序的时候一直苦恼这个问题,怎么样使打印一列数字的末尾不要逗号。没想到《Expert C Programming》里专门讲到了解决的办法。看下面这个函数:
|
|
我和我的小伙伴们都惊呆了!虽然这样做也有缺点,就是必须首先打一个空格,但是比起最后的那个逗号,问题也不大嘛
ps 如果实在不想要那个空格,也不是没有办法,虽然直接去掉空格写成’’是会报错的,但是写成’\0’就完全木有问题了!
###不翼而飞的空间
说起来好像是在变魔术,刚开始写程序的时候,会遇到在某个函数中申请的数组作为返回值返回之后,就无法访问了的情况。当时还不知道什么是堆栈,什么是生存期。当然这一点得感谢编译原理这门课,这是后话。后来明白了这些,也就知道直接malloc一块空间就不会被自动回收掉了。今天在《Expert C Programming》里看到了很多解决方法,十分激动,于是记录下来。
1 返回一个指向字符串常量的指针
说起来好像很神奇,其实就是直接return “今天很开心啊!”;
2 使用全局声明的数组
也就是说直接在全局声明一个数组,在函数中赋值。由于是全局的,当然空间不会被回收。不过总是用全局变量不是什么好习惯的说。
3 使用静态数组
关于static的原理在这里就不多说了。
4 显示分配一些内存
此乃一直在用的方法。为避免内存泄露,用完之后记得回收。
5 要求调用者分配内存来保存函数的返回值
这个方法是最好的解决方案了。因为让调用者指定了缓冲区的大小,所以安全性比较好。