- 不用局部变量和全局变量实现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;\