与之对比的另一种写法:这两个函数都可以成功实现计算字符串长度。第二种方法,利用局部变量len在遍历的时候做自增,然后返回len。因此,每当while循环一次,就需要执行两次自增操作。第一种方法,用局部变量temp记录src遍历前的位置,while循环一次,只需要做一次自增操作,字符串长度=尾指针与头指针的位置差对比了一下,在字符串较长的时候,第一种方法的效率更高一些。
需要注意的是:第44、45行中,strlen是函数,sizeof是算符。strlen()是从内存的某个位置开始扫描,知道碰到第一个字符串结束符'\0'为止,然后返回计数器数值(不包括'\0')。sizeof是一个操作符,简单地说,就是返回一个对象或者类型所占的内存字节数。strcpy和memcpy的区别:1、复制的内容不同,strcpy只能复制字符串,而memcpy可以复制任意内容,例如,字符数组
第8行,指针ptr指向字符串首地址,且用了const修饰,表明ptr是常量指针,只能指向常量,其指向的内容不可改变。这里是方便后面判断字符串的第一个字符是否是‘-’,以方便确定最终的转换结果是正数还是负数。第10行,判断字符串第一个字符是否为‘+’或者‘-’,如果是二者之一,则应该从字符串的第二个字符开始转换。第12行,while循环开始,首先判断每一个字符是否是数字,若不是,则跳出;是,则计算出
第14行,把参数n的绝对值赋给temp,以后在计算各个位的整数时用temp,这样保证在负数情况下取余不会出现问题。第20行,取整数最末尾的数字,+'0'是将其转换为字符,第21行,取剩余数字,当执行完while(temp)这个循环,就将该整数的所有位都从右到左的剥离出来,并依此存于buf数组中,例如temp=123,则此时buf[0]=3,buf[1]=2,buf[2]=3,这是倒序的。第24行,
//strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止//功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内//如果strlen( str1 ) <= 10,那么str1就有可能长度为11字节,那么string就放不下了int strlen(con
//原型声明:char *strcpy(char* dest, const char *src);//功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间//说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。//返回指向dest的指针。char *strcpy(char *dest, const char *src){&nbs
正数的原码、反码、补码是一模一样的。如正数10的原码、反码、补码都是0000 1010负数的补码就是原码取反加1如负数-67的原码是1100 0011,其补码是1011 1101利用补码,可以把减法运算变成两个补码相加,然后再将结果变为原码即可。那么计算10-67,就相当于10 + (-67),即0000 1010 + 1011 1101 = 1100 0111再将其变为原码,即1011
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号