由論壇上關於不用變量實現STRLEN函數和宏定義2個數據進行交換

最近在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 

個人覺得版本一的比較好!因爲類型我們可以定義,版本二如果是浮點數真不能處理

(推薦這個博客,經典!)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章