最近在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
個人覺得版本一的比較好!因爲類型我們可以定義,版本二如果是浮點數真不能處理
(推薦這個博客,經典!)