两个C语言面试题---strlen()的实现 和 宏的应用
来源:互联网 发布:模拟退火算法的代码 编辑:程序博客网 时间:2024/05/16 07:43
1.不用局部变量和全局变量实现strlen库函数
一般用有变量的实现方法是:
(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 );}但是题目要求不能使用变量,所以只想到用递归来解了
int myStrlen(char *str){ if(NULL == str) return 0; if(*str == '\0') return 0; return myStrlen(str+1) + 1;}可能还会有更好的方法,欢迎提出。
2、只有两个数据,写一个交换数据的宏;
普通的解法是:
#define mySwap(a, b) a ^= b, b ^= a, a^= b或者是:
#define mySwap(a, b) a = a + b, b = a - b, a = a - b但问题出现了,要是浮点数怎么办,而且第二个还有可能会发生溢出等等现象。
所以出现另一种解法是:
#define max(x,y) ({typeof(x) temp; temp=x;x=y;y=temp;})还有另一种更好的方法,也是本人最喜欢的方法:就是使用内存拷贝的方法
#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);\}
- 两个C语言面试题---strlen()的实现 和 宏的应用
- C语言 sizeof和strlen之间的那些事 C/C++软件开发求职面试题 必备考点(一)
- C语言 sizeof和strlen之间的那些事 C/C++软件开发求职面试题 必备考点
- 【面试题】C语言:使用函数实现两个数的交换
- 剑指offer面试题7 两个栈实现队列和template的应用
- C语言的宏编写(面试题)
- c语言的面试题
- 【C语言】strlen函数的实现
- 面试题:实现两个数的和,不能用“+”“-”
- 面试题之strcpy/strlen/strcat/strcmp的实现
- 面试题 模拟实现strlen函数的3种方法。
- 面试题之strcpy/strlen/strcat/strcmp的实现
- C语言的sizeof和strlen
- C语言sizeof 和 strlen 的区别
- C语言的sizeof和strlen
- C语言的sizeof和strlen
- C语言的sizeof和strlen
- C语言sizeof 和 strlen 的区别
- 分布式计算开源框架Hadoop入门实践
- java生成缩略图
- C# DDOS攻击代码
- PHP 转义与反转义函数
- Android Resource介绍和使用
- 两个C语言面试题---strlen()的实现 和 宏的应用
- Android 多点触摸接口
- 成功,你跑不了了
- 苹果的在线应用商店模式不适合软件公司的云服务
- BOOL和bool的区别
- C++ 虚函数 修改虚表
- LINUX命令全集
- 实体“微地址”的遐想
- 初学网络编程