由论坛上关于不用变量实现STRLEN函数和宏定义2个数据进行交换

来源:互联网 发布:渡边淳一 知乎 编辑:程序博客网 时间:2024/05/19 09:41

最近在C 语言的论坛上看到以下2个题目:

1. 不用局部变量和全局变量实现strlen;

2.有2数据,写一个交换数据的宏;

A:关于不用变量实现问题1,首先想到的是递归,经过综合了解实现方式如:

 18 uint strlen(const char *pstr)//采用三目运算
 19 {
 20 
 21     return (*pstr == '\0') ?0:strlen(++pstr)+1;
 22 }

这个是不用考虑效率的做法,由此找到一篇经典的解释文章:,有什么想法的最好看一下这个博客,真的经典酷毙了!

引申出一个问题:堆栈的位置,和变量的关系,如何计算程序运行时间?用多大内存等,想明白了真的收益匪间希望自己努力搞懂。

A2:1

 //verion1:

 12 //what about the different type?
 13 #define SWAP1(type,a,b) type tmp;tmp=a;a=b;b=tmp;
 14 //verion2:
 15 //what about the float?
 16 #define SWAP2(a,b) a=a^b,b=a^b,a=a^b 

个人觉得版本一的比较好!因为类型我们可以定义,版本二如果是浮点数真不能处理

(推荐这个博客,经典!)

0 0
原创粉丝点击