在CSDN论坛上看到的,很多人都在讨论。我也不知道标准答案是什么。
原题是:
1.不用局部变量和全局变量实现strlen;
2.有2数据,写一个交换数据的宏;(注意要考虑到浮点数和溢出的情况)
1 这一题大部分人都倾向于用递归来做,但有人给出了如下答案,我感觉更好:
#include <stdio.h>
int mstrlen(char *p)
{
return ToEnd(p) - p;
}
char * ToEnd(char * p)
{
while(*p != '\0')
p++;
return p;
}
将两个返回值相减即能得到答案
2 这个题目提供的答案有很多种,感觉用memcpy比较靠谱。下面是一个强人提供的答案
#define SWAP(a, b)\
{\
int size = sizeof(a);\
char* temp = (char*)malloc(size);\
memcpy(temp, &a, size);\
memcpy(&a, &b, size);\
memcpy(&b, temp, size);\
free(temp);\
}
希望大家多多提出更好想法