- 不用局部變量和全局變量實現strlen;
int My_Strlen( char *str )
{
if( *str == '\0' )
{
return 1;
}
else
{
return My_Strlen( ++str ) + 1;
}
}
下面是標準實現:
標準實現
size_t strlen_a(const char * str) {
size_t length = 0 ;
while (*str++ )
++ length;
return length;
}
改進版
size_t strlen_b(const char * str) {
const char *cp = str;
while (*cp++ )
;
return (cp - str - 1 );
}
2.有2數據,寫一個交換數據的宏;
下面的實現整數的情況是沒有問題的,但是浮點的情況不行,浮點不支持^,編譯不通過。
#define swap(a,b) a = a ^ b, b = a ^ b, a = a ^ b
我覺得簡單的最好用,下面的實現可以做到,一開始會認爲有溢出什麼的,其實是沒有問題的,真的很神奇
#define SWAP(a,b) \
a = a + b;\
b = a - b;\
a = a - b;\