C语言strlen()函数,返回字符串长度怎么自己数

传说常见的一个笔试题:不使用Φ间变量求const字符串长度怎么自己数即实现求字符串长度怎么自己数库函数strlen函数。函数接口声明如下:int strlen(const char *p);

  在字符串中通常可以利用最後一个结束符’\0’但此处参数为const,只读那么我们不能打他的主意。

  函数运行过程中不占用内存基本不可能除非都使用了寄存器。“不使用中间变量”只是说程序员不能显示的申请内存而已即不能有局部变量或者动态内存申请。

  如果函数自动申请栈内存或者使用寄存器存储变量或者使用立即数寻址即常量,那么就相当于“不使用中间变量”

   从函数原型看,返回值为int那么在函数内部必定需要一个地方存储这个值,要么是常数要么是寄存器长度不为1时不能一次就求出来,说明必须有递归调 用这样递归时函数会自动申请栈内存,这样就相当于程序员“不使用中间变量”了中间返回的值通过寄存器自动保存,最后一次返回时拷贝到int中去 C/C++中也有临时對象的概念,都是程序在运行过程中由编译器在栈中自动申请的对象对程序员不可见,也相当于“不使用中间变量”

  另外一个不申請任何变量的典型题目是:反转字符串

  这种问题都是利用常量或者将变量的申请交给编译器在递归过程中自动在栈中申请,也就是借刀杀人了

  无代码,无真相;简单的源码如下:

我要回帖

更多关于 字符串长度怎么自己数 的文章

 

随机推荐